2016-07-09 2 views
1

Я пытаюсь получить первые все свои данные, прежде чем возвращать свои ценности ... Но я не могу найти в Интернете что-то о обработчике завершения для firebaseoperation.Завершение обработчика Firebase в Android

Может ли кто-нибудь помочь?

Моя текущая реализация не работает ....

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) { 

     } 
    }); 
Смежные вопросы