2016-03-11 13 views
5

Moi datastructure (userdetails)jest sposób na uzyskanie liczby dzieci węzła bez ładowania wszystkich danych węzła w systemie Android?

-KCV32vWQECRlMvlgkGO 
    Name: "asdf" 
    Phoneid: "1zlkflakfhkf0e8" 
    Phoneno: "9478567899" 
-KCV3s-lwv5i-VvFBaxq 
    Name: "asas" 
    Phoneid: "1c584jbascjasc8" 
    Phoneno: "9999999999" 

moja metoda

queryRef.addChildEventListener(new ChildEventListener() { 

    public void onCancelled(FirebaseError arg0) { 
     // TODO Auto-generated method stub 
    } 

    public void onChildAdded(DataSnapshot arg0, String arg1) { 
     // TODO Auto-generated method stub 
     System.out.println("Size "+arg0.getChildrenCount()); 
    } 

Jak uzyskać liczbę 2? Dostaję 3 dwa razy, ponieważ za każdym razem wchodzę do środka i otrzymuję dziecko osobno.

Odpowiedz

4

Problem polega na tym, że migawka, którą daje zdarzenie child_added, to nowe dane podrzędne. Tak więc getChildrenCount() policzy, ile (dzieci) ma nowe dziecko (i ma 3).

Aby zrobić to, co chcesz należy dodać zdarzenie ValueEventListener tak:

queryRef.addValueEventListener(new ValueEventListener() { 
    public void onCancelled(FirebaseError arg0) { 
    } 

    public void onDataChanged(DataSnapshot arg0, String arg1) { 
     System.out.println("Size "+arg0.getChildrenCount()); 
    } 
}); 

ten powinien zwrócić wszystkie dzieci w queryRef lokalizacji każdym razem, gdy zmienia się wartość (np nowe dziecko).

Powiedz, czy to działa, bo sam nie mogę tego wypróbować.

Powiązane problemy