2016-11-01 16 views
9

Bu gibi benim test benzediğini (x y yapmak her çocuk for =) döngü I yapabilirsiniz:Firebase Android için, nasıl bir çocuk aracılığıyla

enter image description here

Yukarıda alanları kullanmaz, bu kadar sadece bir kukla. Bunu yapmanın başka bir yolu yoktur, firebaseAdapter kullanıyor bir nesne listeleme bulundu

System.out.println(emailString); 

tek yolu: Ama dönmek her e-posta "kullanıcı" ve tüm çocuklara geçmesi istersiniz?

+0

sen https://github.com/firebase/FirebaseUI-Android/blob/master/database/src/main/java/com/firebase/ui/database/FirebaseRecyclerAdapter ([ 'FirebaseRecyclerAdapter'] kastettiniz .java)? .Bunun nesi var? – rubenlop

cevap

20

En kolay yol bir ValueEventListener ile. for döngüsü içinde DataSnapshot child anahtar olarak UID'leri olacağı

reference.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      for(DataSnapshot child : dataSnapshot.getChildren()){ 
       // Do magic here 
      } 
     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) {} 
    }); 

Not:

FirebaseDatabase.getInstance().getReference().child("users") 
      .addListenerForSingleValueEvent(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        for (DataSnapshot snapshot : dataSnapshot.getChildren()) { 
         User user = snapshot.getValue(User.class); 
         System.out.println(user.email); 
        } 
       } 
       @Override 
       public void onCancelled(DatabaseError databaseError) { 
       } 
      }); 
+0

Merhaba, bu kod çalışıyor, teşekkürler. Ancak, son e-posta bir sebepten 2 defa tekrar eder. – Rosenberg

+0

Boşver, düzelt. Şimdi bir kodun nasıl çalıştırılacağını öğrenmem gerekiyor * sonra * bu döngü, her kod yazmadan önce * çalışır *. – Rosenberg

+3

Kullanıcı burada nedir? –

2

Let aşağıdaki gibi kullanıcıları, sen düğümlerini yinelemek yapabilirsiniz düğüme bir başvuru var demek değil, kullanıcıları.

+0

modelinin ürkütücü sınıfı ama bu kötü değil mi? Demek istediğim, tüm kullanıcılar için 'DataSnapshot child: dataSnapshot.getChildren())' dır, yani eğer 100 kullanıcımız varsa, yüklenmesi çok zaman alır. Bunu düzeltmenin bir yolu var mı? –

+0

Benim önerim, [Sorgu] (https://firebase.google.com/docs/reference/js/firebase.database.Query) aracılığıyla indirilen kullanıcı sayısını sınırlamak ya da bir [ChildEventListener] kullanabilirsiniz (Daha iyi çoklu kullanım için https://www.firebase.com/docs/java-api/javadoc/com/firebase/client/ChildEventListener.html) – Sunshinator

2
FirebaseDatabase database = FirebaseDatabase.getInstance(); 
DatabaseReference myRef = database.getReference(); 
myRef.addValueEventListener(new ValueEventListener() { 
@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 
    for(DataSnapshot item_snapshot:dataSnapshot.getChildren()) { 

     Log.d("item id ",item_snapshot.child("item_id").getValue().toString()); 
     Log.d("item desc",item_snapshot.child("item_desc").getValue().toString()); 
    } 
    } 
} 
İlgili konular