web-dev-qa-db-ja.com

Firebase for Android、子をループする方法(子ごとにx = y)

これは私のテストのようです:

enter image description here

上記のフィールドは使用せず、単なるダミーです。しかし、私は「ユーザー」上のすべての子供を調べて、各メールに対して以下を返したいと思います:

System.out.println(emailString);

オブジェクトをリストする唯一の方法はfirebaseAdapterを使用することですが、それを行う別の方法はありますか?

16
Rosenberg

最も簡単な方法は、ValueEventListenerを使用することです。

    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) {
                }
            });
35
rubenlop88
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());
     }
  }
}
5
Amol Dhanwat

ノードsersへの参照があるとしましょう。次のようにノードを反復処理できます。

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

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

DataSnapshot child forループ内では、sersではなく、UIDをキーとして使用します。

3
Sunshinator