2016-07-09 2 views
1

내 값을 반환하기 전에 먼저 모든 데이터를 얻으려고합니다 ...하지만 firebaseoperation에 대한 완료 처리기에 대해 인터넷에서 찾을 수 없습니다.안드로이드의 완성 처리기 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) { 

     } 
    }); 
관련 문제