2016-07-19 15 views
7

Hey Ich entwickle eine App, die die neuesten Daten, die ich in der Firebase-Datenbank auf täglicher Basis hinzufügen, zeigen wird. Die neuesten Daten sollten in der Recycleransicht oben angezeigt werden. Hier ist, wie die Knoten aussehen wie auf FeuerbasisFirebase android Paginierung mit Recyclerview

enter image description here

Nehmen wir an, dass es derzeit 100 Knoten in der Datenbank. Wenn die App geöffnet wird, erhält sie die Datenspeicher in den Knoten 100 bis 80. Wenn der Benutzer nach unten scrollt, erhält er die neuesten Daten, die in den Knoten 79 bis 59 gespeichert sind und so weiter.

Im Moment bin ich in der Lage, die letzten 20 Knoten mit dieser Abfrage

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

ich den Schlüssel des Knotens an der Position bekommen zu bekommen 79, wenn ich die Abfrage ändern, um letzten 21 Elemente zu beschränken, sondern wie verwende ich dann den 79. Knotenschlüssel, um den nächsten Satz von Knotendaten zu erhalten, dh von 79 bis 59?

+0

Wie wäre es, den zuletzt abgerufenen Schlüssel im Speicher zu behalten und 'startAt (savedKey)' zu verwenden? Sie können es wahrscheinlich mit 'limitToLast (20)' kombinieren. Stellen Sie sicher, dass Sie die gespeicherte Taste nicht zweimal anzeigen – Sunshinator

Antwort

11

Sie würden endAt() verwenden, da Sie möchten, dass das letzte Element das "älteste" ist, das Sie zuvor erhalten haben.

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

Die oldestKeyYouveSeen ist bekannt als der Anker. Sie müssen dies selbst in Ihrem Code verfolgen: Setzen Sie es auf den Schlüssel des ältesten Elements, das Sie gesehen haben.

Beachten Sie, dass es sowohl in der ersten als auch in der zweiten Abfrage vorhanden ist. Sie müssen es also einmal in Ihrem Code explizit ausschließen.

+0

Danke für die Antwort Frank, genau das, was ich gesucht habe. Allerdings habe ich bemerkt, dass das Einfügen von Inhalt in Firebase DB eine neue Zeile aus dem Text entfernt und den gesamten Text in eine Zeile stellt. Wie auch immer, um es nicht zu tun? –

+0

Das klingt nach einer ganz anderen Frage. Aber ich würde versuchen, "\ n" als Flucht für Zeilenumbrüche zu verwenden. –

+1

hey @FrankvanPuffelen ich will wissen, wie man 'oldestKeyYouveSeen' bekommt? –