web-dev-qa-db-fra.com

Android - ListView pour charger plus d'articles lorsque la fin est atteinte

J'ai réussi à implémenter un listView où chaque ligne est un objet que j'ai créé. J'ai une interface qui lit certains objets et renvoie un tableau d'entre eux, que je passe au constructeur de l'adaptateur. Ce que je veux faire, c'est que la liste pouvant être très longue, mon interface permet de lire à chaque fois quelques éléments supplémentaires (page 0, page 1 ...) donc je veux, lorsque l'utilisateur atteint la dernière ligne de la liste, charger la page suivante et l'insérer dans la listView. Quelle est la bonne façon de procéder? En fait, je veux que "atteindre la fin de la liste" déclenche un rappel où je peux demander plus de pages et les charger dans la liste. Un peu OT à ma question principale, mais cela ne me dérange pas d'utiliser un baseAdapter, les deux fonctionneraient, je ne sais pas ce qui est mieux pour la tâche.

20
buddy123

Vous pouvez ajouter un pied de page sur la listView qui aura un bouton nommé LoadMore. Voici un tutoriel complet ListView avec bouton Charger plus Ou vous pouvez implémenter onscrolllistener () et ajouter cet écouteur à votre 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's been a scroll which has completed ***/
        /*** do the work for load more date! ***/
        if(!isLoading){
             isLoading = true;
             loadMoreData();
        }
    }
}

J'espère que cela vous aidera