Ich habe die Daten für meine App in der Firebase RealtimeDatabase gespeichert. Nun stehe ich vor einem großen Problem beim Abrufen und Schreiben der Daten in eine CSV-Datei. Meine Datenbank besteht aus zwei Childnodes: Das Model UserInfo mit verschiedenen Attributen wie Name, Geburtstag etc., und das Child Times mit verschiedenen Zeitpunkten. Beide als String-Werte dargestellt. Die Zeiten lasse ich mir in eine erstellte ArrayListe ausgeben.
Um die Daten zu erhalten, habe ich zwei Abfragen. Alles funktioniert gut. Aber jetzt habe ich entdeckt, dass Firebaseabfragen asynchron arbeiten. Und die einzige Möglichkeit, die Daten in die CSV-Datei zu schreiben, scheint innerhalb der onDataChange-Methode des EventListeners zu sein.
Ich kann die Werte aus Firebase leider nicht außerhalb der onDataChange-Methode speichern bzw. weiterverarbeiten. Wenn ich eine globale Stringvariable anlege und diese in der onDataChange Methode des Eventlisteners mit Userinfo.name befülle, und dann außerhalb der onDataChange() z.B. dazu benutzen will, den Text eines Textviews in der UI zu updaten, dann ist der Wert null. Soweit ich weiß liegt das daran, dass die Datenbankanfrage an Firebase vom Compiler noch gar nicht abgeschlossen ist, und der restliche Code aber bereits ausgeführt worden ist.
Ich weiß nicht, wie ich den Buffered Writer aufteilen kann. Im Moment ist es für mich nur möglich, alle Schreibvorgänge innerhalb einer der beiden Queries zu haben. Aber das ist keine Lösung. Ich brauche alle Daten aus beiden Abfragen in die Datei geschrieben.
Weiß jemand eventuell, wie man ein solches Problem lösen kann? (Ich verwende Java-Code)
Ich bin langsam am verzweifeln.
Um die Daten zu erhalten, habe ich zwei Abfragen. Alles funktioniert gut. Aber jetzt habe ich entdeckt, dass Firebaseabfragen asynchron arbeiten. Und die einzige Möglichkeit, die Daten in die CSV-Datei zu schreiben, scheint innerhalb der onDataChange-Methode des EventListeners zu sein.
Ich kann die Werte aus Firebase leider nicht außerhalb der onDataChange-Methode speichern bzw. weiterverarbeiten. Wenn ich eine globale Stringvariable anlege und diese in der onDataChange Methode des Eventlisteners mit Userinfo.name befülle, und dann außerhalb der onDataChange() z.B. dazu benutzen will, den Text eines Textviews in der UI zu updaten, dann ist der Wert null. Soweit ich weiß liegt das daran, dass die Datenbankanfrage an Firebase vom Compiler noch gar nicht abgeschlossen ist, und der restliche Code aber bereits ausgeführt worden ist.
Ich weiß nicht, wie ich den Buffered Writer aufteilen kann. Im Moment ist es für mich nur möglich, alle Schreibvorgänge innerhalb einer der beiden Queries zu haben. Aber das ist keine Lösung. Ich brauche alle Daten aus beiden Abfragen in die Datei geschrieben.
Weiß jemand eventuell, wie man ein solches Problem lösen kann? (Ich verwende Java-Code)
Ich bin langsam am verzweifeln.