Android - ListView для загрузки большего количества предметов по достижении конца

Я успешно реализовал listView, где каждая строка - это объект, который я создал. У меня есть интерфейс, который читает некоторые объекты и возвращает массив из них, который я передаю конструктору адаптера. То, что я хочу сделать, так как список может быть очень длинным, мой интерфейс позволяет читать каждый раз еще несколько элементов (страница 0, страница 1...), поэтому я хочу, когда пользователь достигнет последней строки списка, загрузите следующую страницу и вставьте ее в списокView. Каков правильный способ сделать это? Я действительно хочу, чтобы "конец конца списка" вызывал обратный вызов, где я могу запросить дополнительные страницы и загрузить их в список. Немного OT к моему основному вопросу, но я не против использования baseAdapter, оба будут работать, я просто не знаю, что лучше для задачи.

Ответы

Ответ 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();
        }
    }
}

Надеюсь, что это поможет