Reputation: 316
Hi, I am trying to access id
inside Members. Here is something I tried but it shows me NullPointerException
.
groupRefernce = FirebaseDatabase.getInstance().getReference("Groups");
groupRefernce.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot dataSnapshot : snapshot.getChildren()){
String id = dataSnapshot.child("Members/id").getValue().toString();
List<String> groupMembers = new ArrayList<>();
groupMembers.add(id);
Log.d("groups", String.valueOf(groupMembers.size()));
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
So, what changes should I make?
Upvotes: 0
Views: 63
Reputation: 139039
To get all the IDs inside the Members
node, please use the following lines of code:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference groupsRef = rootRef.child("Groups");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot groupSnapshot : dataSnapshot.getChildren()) {
for(DataSnapshot memberSnapshot : groupSnapshot.child("Members").getChildren()) {
String id = memberSnapshot.child("id").getValue(String.class);
Log.d("TAG", id);
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
}
};
groupsRef.addListenerForSingleValueEvent(valueEventListener);
The result in the logcat will be:
FzyF ... osn1
ILSH ... ZVG3
eBAZ ... zUE2
The key for solving this problem is to use to iterate your Groups
node twice using a call to .getChildren()
method.
Upvotes: 2