Wie lade ich Daten aus der Firebase-Datenbank mit der geschachtelten Array- und Objektstruktur ab?

8

Ich habe an vielen Stellen Datenextraktionscode ausprobiert, aber überall bekomme ich Informationen in einer einfachen Liste. Da die Struktur meines JSON komplex ist und ich es jetzt nicht ändern kann, bitte helfen Sie mir beim Abrufen von Daten aus der Firebase-Datenbank. Bitte helfen Sie mir, da ich den Firebase-Code nicht verstehen kann . Folgendes ist meine Code- und JSON-Datenbank:

CategoryModel.xml

%Vor%

CardviewActivity: Früher habe ich eine Asset-Datei verwendet, aber jetzt möchte ich Daten von Firebase abrufen, deren Code mehrdeutig online ist

%Vor%

RecyclerViewAdapter:

%Vor%     
Guneet Kaur 31.05.2017, 12:59
quelle

2 Antworten

5

Die einzige Möglichkeit, Daten von der Firebase-Datenbank abzurufen, ist ein ValueEventListener . Firebase arbeitet mit asynchronen Aufrufen, sodass Sie die Funktion nicht aufrufen, die Daten abrufen und verwenden können. Sie müssen einen ValueEventListener in einer bestimmten Datenbankreferenz festlegen.

Für Ihr tatsächliches Problem müssen Sie ein Array erstellen, die Firebase-Referenz festlegen, den ValueEventListener hinzufügen und innerhalb jedes Arrays der CategoryList im Array hinzufügen. Schließlich können Sie innerhalb des ValueEventListener Ihr CategoryModel mit dem Array der CategoryList als Parameter erstellen und Ihre UI aktualisieren, um die Daten in CategoryModel anzuzeigen:

%Vor%

Damit dies funktioniert, muss Ihre CategoryList-Klasse alle Setter ihrer Mitglieder implementieren, so dass "datasnapshot.getValue ()" funktioniert. Ein anderer Ansatz kann sein, einen Konstruktor in CategoryList zu erstellen, der einen DataSnapshot auf diese Weise wiedergibt:

%Vor%

Wenn Sie den Konstruktor erstellen, müssen Sie diese Zeile ersetzen:

%Vor%

mit diesem:

%Vor%

Sie können sehen, dass ich GenericTypeIndicator für die Arbeit mit Sammlungen verwende Für Daten ist dies eine Hilfsklasse, die Firebase für die Arbeit mit Listen, Maps, Sets oder einer anderen Collection bereitstellt.

    
Cristian Torres 07.06.2017 23:50
quelle
1

Nur eine Empfehlung! Dies ist keine gute Datenstruktur, Sie sollten Ihre Daten denormalisieren. Dann können Sie Ihre Daten nach ChildEventListener oder ValueEventListener beobachten.

Zum Beispiel:

%Vor%

Hier finden Sie einige nützliche Links zur Denormalisierung Ihrer Daten

Link1 , Link2

    
uguboz 12.06.2017 22:28
quelle