2013-12-08 25 views
17

Pomyślnie zaimplementowałem listView, gdzie każdy wiersz jest obiektem, który utworzyłem. Mam interfejs, który odczytuje niektóre obiekty i zwraca ich tablicę, które przekazuję do konstruktora adaptera. Co chcę zrobić, ponieważ lista może być bardzo długa, Mój interfejs pozwala czytać za każdym razem więcej elementów (strona 0, strona 1 ...), więc chcę, gdy użytkownik dotrze do ostatniego wiersza listy , załaduj następną stronę i wstaw ją do listView. Jaki jest właściwy sposób? Rzeczywiście chcę, aby "reach end of list" wywoływał wywołanie zwrotne, gdzie mogę poprosić o więcej stron i załadować je do listy. Trochę OT na moje główne pytanie, ale nie przeszkadza mi użycie baseAdapter, oba będą działać, po prostu nie wiem, co jest lepsze dla tego zadania.Android - ListView, aby załadować więcej elementów po osiągnięciu końca

Odpowiedz

27

Możesz dodać stopkę do listy, która będzie miała przycisk o nazwie LoadMore. Powyżej znajduje się pełna poradnik ListView with Load More Button Albo można wdrożyć onscrolllistener() i dodać tę słuchacza do 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(); 
     } 
    } 
} 

nadzieję, że pomoże

+0

dziękuję, postaram to i zobacz, jak się okazuje:) – buddy123

+0

Dlaczego nie używać java.util.concurrent.Semaphore, aby rzeczy jeszcze bardziej stały? – slott

+0

@Md. Monsur Hossain Tonr gdzie jest klasa dlaScrollListener – Erum

Powiązane problemy