2016-11-01 7 views
9

이이처럼 내 테스트 모습입니다 (X는 Y을 각 자식 = 대한) 루프 I를 할 수 있습니다중포 기지 안드로이드, 어떻게 아이를 통해

enter image description here

내가 위의 필드를 사용하지 않습니다, 그것은이다 그냥 거짓. 그 일을 다른 방법이, firebaseAdapter 사용하고 내가 객체를 나열하는 발견

System.out.println(emailString); 

유일한 방법 :하지만이를 돌려 각 이메일 "사용자"에와 모든 아이들을 통해 이동 하시겠습니까?

+0

당신은 https://github.com/firebase/FirebaseUI-Android/blob/master/database/src/main/java/com/firebase/ui/database/FirebaseRecyclerAdapter (['FirebaseRecyclerAdapter']을 찾으시는 .자바)? 그게 뭐가 잘못 됐니? – rubenlop

답변

20

가장 쉬운 방법은 ValueEventListener입니다. 루프에 대한 내부의 DataSnapshot child 키와 UID가있을 것이라는 점을

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

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

참고 :

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

안녕하세요,이 코드는 잘 작동합니다. 감사합니다. 그러나 마지막 전자 메일은 어떤 이유로 2 번 반복됩니다. – Rosenberg

+0

신경 쓰지 마라. 이제 코드 *를 실행하는 방법을 알아야합니다. * 루프가 끝나기 전에 모든 코드를 실행합니다. – Rosenberg

+3

여기에 사용자는 무엇입니까? –

2

하자가 다음과 같이 사용자, 당신은 노드를 반복 할 수있는 노드에 대한 참조가 말한다 , 아니 사용자.

+0

호기심이 있지만 나쁘지 않습니까? 나는 모든 사용자를 통해'for (DataSnapshot child : dataSnapshot.getChildren())'을 루핑한다는 것을 의미하므로 100 명의 사용자가 있다면로드하는 데 많은 시간이 걸릴 것입니다. 이 문제를 해결할 수있는 방법이 있습니까? –

+0

제 제안은 [Query] (https://firebase.google.com/docs/reference/js/firebase.database.Query)를 통해 다운로드 한 사용자 수를 제한하거나 [ChildEventListener] (더 나은 멀티 스레딩을위한 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()); 
    } 
    } 
} 
관련 문제