Jaki jest najlepszy sposób na rozwiązanie tego problemu?
Dodaj "niekończącą się" logikę do własnej implementacji PagerAdapter
. Lub, jeśli chcesz, spróbuj stworzyć dekorację PagerAdapter
, sposób, w jaki EndlessAdapter
zdobi zwykły .
To ostatnie może być trudne, biorąc pod uwagę, że PagerAdapter
jest przeznaczony do stron, które mają być widokami lub fragmentami, a obsługa fragmentów wewnątrz klas takich jak FragmentPagerAdapter
jest nieco przerażająca.
Czy istnieje biblioteka, która już to obsługuje?
Brak, o którym jestem świadomy.
Głównie dlatego, że przypadek użycia nie wydaje się zbyt przekonujący. Dzięki ListView
użytkownik może rzucić palcem na listę, bardzo szybko przewijając dziesiątki lub setki rzędów. Dlatego użycie "dotarliśmy do końca", ponieważ wyzwalacz do załadowania większej ilości danych wydaje się uzasadniony. W przypadku modelu ViewPager
jednak uzyskanie końca jest zazwyczaj znacznie dłuższe, szczególnie w przypadku, gdy użytkownik nie używa PagerTabStrip
lub odpowiednika. Dlatego czekanie, aż użytkownik dotrze do końca, aby rozpocząć ładowanie dodatkowych danych, wydaje się być denerwujące dla użytkownika - przez cały czas pobierano więcej danych, ale go nie używano.
Alternatywą jest zarejestrowanie urządzenia ViewPager.OnPageChangeListener
przy użyciu swojego telefonu ViewPager
. Kiedy onPageSelected()
, a ty uważasz się za blisko końca, uruchom AsyncTask
(lub cokolwiek innego), aby zebrać więcej danych. Połów jest to, że będziesz musiał zaktualizować dane używane przez PagerAdapter
i zadzwonić notifyDataSetChanged()
na tym adapterze, gdy dane zostały zaktualizowane.
Jeśli już zaimplementowałeś, podziel się swoim rozwiązaniem na gitHub lub gdziekolwiek chcesz :) –