Обнаружение последней строки списка прокрутки – Android

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

Теперь, как определить, что listview отображает последнюю строку?

Может ли кто-нибудь помочь мне?

lv.setOnScrollListener(new OnScrollListener() { @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // Check if the last view is visible if (++firstVisibleItem + visibleItemCount > totalItemCount) { // if so, download more content } } } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // TODO Auto-generated method stub } }); 

Попробуйте это в режиме просмотра списка.

 ((ScrollView) findViewById(R.id.scrollDowns)).fullScroll(View.FOCUS_DOWN); 

Вы можете использовать Amazing ListView для автоматической загрузки следующих страниц (например, «Загрузка …» на последний элемент).

ListView с анимацией «Загрузка ...» внизу

В соответствии с документацией реализованы следующие методы:

  • onNextPageRequested Вызывается, когда пользователь прокручивает список до тех пор, пока не появится индикатор загрузки. Это называется потоком пользовательского интерфейса, поэтому, если у вас есть сетевые запросы, убедитесь, что вы делаете это на фоне. Также указан номер страницы.

По умолчанию вы считаетесь на последней странице, и в нижней части списка вы не увидите сообщение «Загрузка …». Вам нужно контролировать, есть ли еще страницы для отображения.

  • notifyMayHaveMorePages чтобы указать, что у нас все еще есть больше данных, поэтому будет показано сообщение «Загрузка …».
  • notifyNoMorePages чтобы указать, что мы загрузили все данные, поэтому больше не нужно выводить сообщение «Загрузка …».
  • nextPage чтобы увеличить номер страницы. Сделайте это, добавив новые данные в свой адаптер.
  • resetPage чтобы сбросить номер страницы до 1 (или к значению, указанному setInitialPage ).

Так что вам нужно сделать, это получить больше данных, когда onNextPageRequested . И вызовите nextPage когда вы добавляете новые данные в свой адаптер.

Вышеупомянутая реализация slezadav может привести к ошибкам при граничных условиях. Сумма первого видимого элемента и элементов на странице может быть 1 счет больше или меньше ожидаемого. Я использовал то же самое, пока не перешел на новый метод. То, что я сделал, было поставлено слушателем в Adapter of listview и в проверке getview, если (позиция == totalItemCount элементов в массиве будет отображаться), если да, я вызываю своего слушателя из адаптера, а слушатель будет вытягивать больше данных из api , Довольно просто

Intereting Posts
Ошибка Eclipse – parseSdkContent – не распознавание файлов XML Что такое производственное хранилище в андроиде и как я могу получить путь к производству? Ошибка приложения после приема телефонного звонка Кэширование данных для мобильных приложений iOS / Android для работы с разбиением на страницы Поиск в нескольких столбцах с использованием полнотекстового поиска (FTS) с несколькими токенами с использованием оператора OR Разблокируйте экран эмулятора, используя эспрессо Как использовать Android Studio с Cocos2d-x Дождитесь завершения задачи Андроидное затмение с использованием строкового ресурса для размера текста в макетах Android.permission.CALL_PHONE для планшетов Android Studio не работает – неподдерживаемая основная вспомогательная версия 51.0 Как отправить событие из службы на активность с помощью шины событий Otto? Как настроить среду разработки Android с помощью STS, Android SDK, Maven и Spring Android Поддержание стандартного приложения Состояние состояния Back Back для Android в Android (с использованием режима запуска SingleTask) Маркеры не показаны в стиле MapView на Mapxbox Android