2016-07-09 5 views
1

Ich versuche zuerst alle meine Daten zu bekommen, bevor ich meine Werte zurückgebe ... Aber ich kann nicht im Internet etwas über den Abschluss-Handler für den Firebase-Betrieb finden.Completion Handler Firebase in Android

Kann jemand helfen?

Meine aktuelle Implementierung funktioniert nicht gut ....

public List<ExampleClass> GetAllExamples() { 
    Query examplequery = db.child("example"); 
    exampleList = new ArrayList<ExampleClass>(); 

    examplequery.addChildEventListener(new ChildEventListener() { 

    @Override 
    public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
     String value = getValue(dataSnapshot.getValue().toString()); 
     String key = dataSnapshot.getKey(); 
     ExampleClass ex = new Country(key, value); 
     exampleList.add(ex); 
    } 

    @Override 
    public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

    } 

    @Override 
    public void onChildRemoved(DataSnapshot dataSnapshot) { 

    } 

    @Override 
    public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

    } 

    @Override 
    public void onCancelled(FirebaseError firebaseError) { 

    } 
    }); 

    return exampleList; 
} 
+0

Wann würden diese „Abschluss-Handler“ aufgerufen werden? –

+0

Wenn die Abfrage abgeschlossen ist – Archimedes

+0

Firebase synchronisiert Daten an einem Speicherort, so dass die Abfrage nie wirklich durchgeführt wird. Wenn Sie herausfinden möchten, wann die ursprünglichen Daten synchronisiert wurden, finden Sie unter http://stackoverflow.com/questions/18270995/how-to-retreive-only-new-data –

Antwort

2

Mit Hilfe von Frank fand ich eine richtige Lösung

examplequery.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      // do something after data is synchronized 
     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 

     } 
    }); 
Verwandte Themen