2016-07-09 4 views
1

私は自分の値を返す前に、最初にすべてのデータを取得しようとしています...しかし、firebaseoperationの補完ハンドラについてインターネット上で見つけることはできません。Androidで完成したハンドラFirebase

誰かが助けることができますか?フランクの助けを借りて

私の現在の実装ではうまく動作しません....

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

を見つけましたか? –

+0

クエリが完了したら – Archimedes

+0

Firebaseはある場所でデータを同期させるため、クエリは実際には行われません。最初のデータが同期されたときを検出する場合は、http://stackoverflow.com/questions/18270995/how-to-retreive-only-new-data –

答えて

2

私はこの「完了ハンドラが」呼び出される適切な解決策

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

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 

     } 
    }); 
関連する問題