Promoting (Teil 3): Firestore abfragen - Eine Android App für die Steem Blockchain - Teil #24

in #development7 years ago

Wie bereits im letzten Teil angekündigt, möchte ich heute Daten von Cloud Firestore abfragen. Aber zuerst müssen Daten in Cloud Firestore integriert werden. Ich werde zum Testen meinen letzten Post nehmen.

Schritt 1: Testdaten einfügen

Zunächst ist zu klären, welche Daten zu einem Post gespeichert werden müssen. Dazu gehört zum einen der Autor, der Permlink, die Summe mit der Promoted wurde, wer Promoted hat und bis wann die Promotion geht. Um einen Post manuell über das Webinterface hinzuzufügen, geht man in die Datenbankansicht der Firebase Konsole. Hier klickt man auf "Sammlung hinzufügen". Dies ist Notwendig, da es noch keine Sammlung gibt.
samlungadden.PNG
Nun muss der Sammlung (quasi ein Ordner) ein Name gegeben werden. Ich werde sie bei mir "promotions" nennen, da sie ausschließlich Daten für die Promoted Posts speichern wird.
sammlungerstellen.PNG
Nach einem Klick auf weiter, müssen wir einen Starteintrag hinzufügen. Dieser besteht aus den oben genannten Komponenten. Zusätzlich muss noch eine ID vergeben werden. Diese kann aber zufällig sein. Im folgenden Screenshots meines Starteintrages mit meinem letzten Post:
screen1.PNG
screen2.PNG
Nun ist das Dokument und die Sammlung fertig erstellt.

Schritt 2: Die Klasse PromotedPost

Um die Promoted Posts besser in Java darstellen zu können, erstelle ich eine neue Klasse mit dem Namen PromotedPost. Dies hat die oben schon genannten Felder als Attribute und Getter (!!!Wichtig: Genauso Geschrieben wie in Firebase!!!) sowie zwei Konstruktoren: Einen, der alle Attribute übernimmt und einen Zweiten, der leer ist. Dies ist aufgrund von Firestore wichtig. Zusätzlich beinhaltet die Klasse noch eine ArrayList mit Objekten der Klasse. Diese speichert die Promoted Posts die geladen wurden. Die Klasse sieht so aus:
promopostclass.PNG

Schritt 3: Die Abfragemethode

Die Abfragemethode hat das Ziel, einen begrenzten Datensatz (eine bestimmte Zahl an Einträgen, die über einen Parameter definiert ist) aus Firestore zu laden und der eben angesprochenen ArrayList hinzuzufügen. Hierbei mache ich mir einen Trick zunutze, bei dem Firebase automatisch die Daten auf ein neues Objekt einer spezifizierten Klasse mappen kann. Zusätzlich wird die Abfrage noch nach dem Expiration-Date sortiert, sodass die Promotions, die als nächstes auslaufen ganz oben in der Liste sein werden. Nach ausgeführter Abfrage werden die einzelnen Elemente gemappt und der oben angesprochenen Liste hinzugefügt. Diese Methode sieht implementiert so aus:
writepromopost.PNG
Aufgerufen wird diese Methode in der MainActivity, diese wird beim Start der App als erstes aufgerufen, sodass die Daten geladen sind, wenn sie benötigt werden.
Damit sind nun auch Daten von Cloud Firestore abrufbar, im nächsten Teil geht es dann mit dem Schreiben weiter.


Wenn dir der Post gefallen hat und du mich und das Projekt unterstützen möchtest, tue dies durch einen Upvote.