Подтвердить что ты не робот

Android Динамически загружает Listview в конец прокрутки?

Я загружаю список из Http-сервера, 20 за раз, В конце Listview я хочу загрузить следующие 20 данных с сервера, и этот процесс будет продолжаться до тех пор, пока данные не закончится на сервере, Я использовал класс, который расширяет BaseAdapter для заполнения первых 20 данных. Что я должен делать?

4b9b3361

Ответ 1

Это выглядит также как элегантное решение: http://benjii.me/2010/08/endless-scrolling-listview-in-android/

Он также реализует AbsListView.OnScrollListener и использует AsyncTask для загрузки большего количества контента, как только достигнут определенный порог оставшихся элементов в текущем просмотре прокрутки.

Ответ 2

Хорошо, я видел, что это обычная проблема, поэтому я сделал МАЛЫЙ БИБЛИОТЕКА с дополнительной загрузкой и вытащил, чтобы обновить ListView в github, пожалуйста, проверьте это в здесь, все это объясняется в репозитории.

Ответ 4

Код Heiko Rupp - лучший вариант для этой проблемы.  Единственное, что вам нужно сделать, это реализовать onScrollListener и в onScroll()  просто проверьте, есть ли конец списка, используя код

boolean loadMore =  firstVisibleItem + visibleItemCount >= totalItemCount-1;

если true загружает ваши данные обычным способом.

thaks Heiko Rupp для этого фрагмента:)

Ответ 5

Это то, что я использовал для загрузки большего количества данных в конце списка.

        listview.setOnScrollListener(new OnScrollListener(){

        @Override
        public void onScroll(AbsListView view,
        int firstVisibleItem, int visibleItemCount,
        int totalItemCount) {
        //Algorithm to check if the last item is visible or not
        final int lastItem = firstVisibleItem + visibleItemCount;
        if(lastItem == totalItemCount){                 
        // you have reached end of list, load more data             
        }
       } 
        @Override
        public void onScrollStateChanged(AbsListView view,int scrollState) {
        //blank, not using this
        }
        });

Ответ 6

У меня была эта проблема, когда я случайно пытался обновить представление из не-пользовательского потока. Перемещение кода обновления пользовательского интерфейса в поток пользовательского интерфейса решило мою проблему!

Handler mainHandler = new Handler(Looper.getMainLooper());
mainHandler.post(new Runnable() {
    @Override
    public void run() {
            // insert ui update code here
        }
    }
});