2016-07-19 32 views
7

Hej, rozwijam aplikację, która będzie wyświetlać najnowsze dane, które codziennie dodajemy do bazy danych Firebase. Najnowsze dane powinny pojawić się na górze w widoku recyclerview. Oto jak węzły wyglądać na FirebaseFirebase paginacja android z recyclerview

enter image description here

Załóżmy, że obecnie istnieją 100 węzły w bazie danych. Po otwarciu aplikacji gromadzi dane w węzłach od 100 do 80. Gdy użytkownik przewinie w dół, otrzyma więcej najnowszych danych przechowywanych w węźle od 79 do 59 i tak dalej.

Teraz jestem w stanie dostać ostatnie 20 węzłów z tego zapytania

Query jokesQuery = FirebaseDatabase.getInstance().getReference().child("hindi-jokes").orderByKey().limitToLast(20); 

mogę dostać klucz węzła w pozycji 79, jeśli zmodyfikować kwerendę, aby ograniczyć do ostatnich 21 elementów, ale jak czy następnie użyć klucza 79 węzłów, aby uzyskać następny zestaw danych węzła, tj. od 79 do 59?

+0

Co powiecie na przechowywanie ostatniego pobranego klucza w pamięci i użycie 'startAt (savedKey)'? Prawdopodobnie możesz połączyć go z 'limitem do końca (20)'. Tylko pamiętaj, aby nie pokazywać dwukrotnie zapisanego klucza. – Sunshinator

Odpowiedz

11

Użyłbyś endAt(), ponieważ chcesz, aby ostatni element został zwrócony jako "najstarszy", który otrzymałeś wcześniej.

DatabaseReference jokesRef = FirebaseDatabase.getInstance().getReference().child("hindi-jokes"); 
Query jokesQuery = jokesRef.orderByKey().endAt(oldestKeyYouveSeen).limitToLast(20); 

oldestKeyYouveSeen jest znany jako kotwica. Musisz to samemu śledzić w swoim kodzie: ustawiając go na klucz najstarszego przedmiotu, który widziałeś.

Zauważ, że będzie to zarówno w pierwszym zapytaniu, jak i drugim, więc musisz jednoznacznie wykluczyć je w swoim kodzie.

+0

Dzięki za odpowiedź, Frank, dokładnie to, czego szukałem. Zauważyłem jednak, że wklejanie zawartości w bazie danych Firebase powoduje usunięcie nowej linii z tekstu i umieszczenie całego tekstu w jednym wierszu. W każdym razie, żeby tego nie robić? –

+0

To brzmi jak zupełnie inne pytanie. Ale spróbuję użyć "\ n" jako ucieczki dla nowych linii. –

+1

hej @FrankvanPuffelen chcę wiedzieć, jak uzyskać 'olderKeyYouveSeen'? –

Powiązane problemy