Я успешно реализовал listView, где каждая строка - это объект, который я создал. У меня есть интерфейс, который читает некоторые объекты и возвращает массив из них, который я передаю конструктору адаптера. То, что я хочу сделать, так как список может быть очень длинным, мой интерфейс позволяет читать каждый раз еще несколько элементов (страница 0, страница 1...), поэтому я хочу, когда пользователь достигнет последней строки списка, загрузите следующую страницу и вставьте ее в списокView. Каков правильный способ сделать это? Я действительно хочу, чтобы "конец конца списка" вызывал обратный вызов, где я могу запросить дополнительные страницы и загрузить их в список. Немного OT к моему основному вопросу, но я не против использования baseAdapter, оба будут работать, я просто не знаю, что лучше для задачи.
Android - ListView для загрузки большего количества предметов по достижении конца
Ответ 1
Вы можете добавить нижний колонтитул в спискеView, в котором будет кнопка с именем LoadMore. Вот полный учебник ListView с кнопкой "Загрузить еще" Или вы можете реализовать onscrolllistener() и добавить этот прослушиватель в свой ListView
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
this.currentFirstVisibleItem = firstVisibleItem;
this.currentVisibleItemCount = visibleItemCount;
}
public void onScrollStateChanged(AbsListView view, int scrollState) {
this.currentScrollState = scrollState;
this.isScrollCompleted();
}
private void isScrollCompleted() {
if (this.currentVisibleItemCount > 0 && this.currentScrollState == SCROLL_STATE_IDLE) {
/*** In this way I detect if there been a scroll which has completed ***/
/*** do the work for load more date! ***/
if(!isLoading){
isLoading = true;
loadMoreData();
}
}
}
Надеюсь, что это поможет