ho implementato con successo un controllo ListView in cui ogni riga è un oggetto che ho creato. Ho un'interfaccia che legge alcuni oggetti e ne restituisce un array, che passo al costruttore dell'adattatore. Quello che voglio fare è, dato che la lista può essere molto lunga, la mia interfaccia permette di leggere ogni volta più elementi (pagina 0, pagina 1 ...) così voglio, quando l'utente raggiunge l'ultima riga della lista , carica la pagina successiva e inseriscila in listView. Qual è il modo corretto di farlo? In realtà voglio che il "reach end of list" attivi un callback in cui posso richiedere più pagine e caricarle nell'elenco. Un po 'alla mia domanda principale, ma non mi dispiace usare un BaseAdapter, entrambi funzionerebbero, non so cosa sia meglio per l'attività.Android - ListView per caricare più elementi quando raggiunto la fine
17
A
risposta
27
È possibile aggiungere un piè di pagina sul listView che avrà un pulsante denominato LoadMore. Ecco un tutorial completo ListView with Load More Button Oppure è possibile implementare onscrolllistener() e aggiungere questo ascoltatore al vostro 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();
}
}
}
auguriamo che contribuiscano
grazie, cercherò questo e vedere come andrà a finire:) – buddy123
Perché non utilizzare java.util.concurrent.Semaphore per rendere le cose ancora più solide? – slott
@Md. Monsur Hossain Tonr dove è la classe per onScrollListener – Erum