2016-09-04 6 views
1

Ich habe ein Kind namens Nummern in Firebase-Datenbank.Kann ArrayList nicht mit Firebase hinzufügen

child numbers

in meinem Code, verstehe ich nicht, wenn im Inneren des OnDataChange() -Methode, listNumber.size() return 4. Aber außerhalb OnDataChange() Wert von listNumber.size() return 0

my code:

+2

Bitte geben Sie keine Code als Bild, sondern als formatierten Text. – SurvivalMachine

+0

Im Wesentlichen erhalten Sie dasselbe Ergebnis, wenn Sie diese untere Zeile über den Firebase-Aufruf hinaus verschoben haben. Am besten zu lernen und zu verstehen, wie asynchroner Code funktioniert –

Antwort

3

OnDataChange ist ein Zuhörer, es nicht sofort aufgerufen wird, es nach Daten Firebase zurückgekehrt genannt wird.

So sieht die Ausführungsreihenfolge wie folgt aus:

  1. Make Anfrage Feuerbasis und fügen Sie Hörer. Daten sind nicht vorhanden.
  2. Execute Code nach Anfrage (//result = 0)
  3. Firebase Daten zurückgegeben, so dass Ihre Zuhörer genannt werden (//result = 4)
1

Dies ist die asynchrone Programmierung. Firebase führt seine Methoden asynchron aus, es wartet nicht auf die Daten, da das Abrufen der Daten vom Server viel Zeit in Anspruch nehmen kann. Zu dem Zeitpunkt also, an dem Sie Ihre Variable außerhalb der DataChanged-Methode aufrufen, wird ihr kein Wert zugewiesen. Also hält es null.

Sie können die Anweisung an die onDataChanged-Methode übergeben. Sie können auch eine Modellklasse mit Setter- und Getter-Methoden erstellen. Legen Sie den Wert der Variablen fest, indem Sie den Setter der Modellklasse in onDataChanged aufrufen, und rufen Sie die Getter-Methode nach onDataChanged auf, um den Wert zurückzuerhalten.

Verwandte Themen