2013-07-28 5 views
22

Ich versuche, die Java API zum Lesen von Daten aus einer Firebase-Datenbank in einer Android-Anwendung im onCreate() - Ereignis zu verwenden. Mit anderen Worten, ich versuche die einfachste liest möglich, das äquivalent zu tun ...Wie liest man Daten von Firebase ONCE mit Java/Android?

ref.once('value', function(snapshot) { 

}); 

... in dem Javascript-API. Ich versuche, die addEventListenerForSingleValueEvent() -Methode zu verwenden, aber es scheint, dass ich die onDataChange() -Methode überschreiben soll, was nicht das ist, was ich will. Ich möchte die Daten abrufen, wenn die Programmausführung diese Zeile erreicht, unabhängig von Datenbankereignissen. Hier ist meine (unvollendete) Funktion ....

Ich glaube nicht einmal, dass dies die richtige Methode ist. Ich möchte nur in der Lage sein, eine Datasnapshot zu bekommen, die ich durch laufen kann und Daten erhält aus, wie ...

for (Datasnapshot child : datasnapshot) { 
} 

..just, als ob ich das ref.once('value', function(snapshot) Ereignis in der Javaxcript API verwendet hat.

Antwort

46

Das ist die richtige Methode, und Sie sind auf dem richtigen Weg. Die Benennung ist nur ein wenig verwirrend (sorry!). Wenn Sie den addListenerForSingleValueEvent ausführen, wird Ihre überschriebene onDataChange-Methode genau einmal aufgerufen, mit einem DataSnapshot, genau wie Sie es wünschen (und genau wie "ref.once ('value' ...)").

So sollten Sie in der Lage zu tun:

// Add all polls in ref as rows 
polls.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot snapshot) { 
     for (DataSnapshot child : snapshot.getChildren()) { 
      ... 
     } 
    } 
} 
+0

Oh cool, es bekam. Danke Michael! – MassStrike

+0

Ich musste snapshot.getChildren() '' 'für (DataSnapshot Kind: snapshot.getChildren()) {' '' – realgt

+0

@realgt Hoppla, du hast Recht. Die Antwort wurde aktualisiert. Vielen Dank! –

Verwandte Themen