例如,我的数据库中有2个主要节点(可能有更多)。父节点是用户的身份验证ID并在其中 你可以看到一些细节。 如果任何用户登录其活动中填充的所有其他用户的数据,我试图这样做 但我真的不知道如何开始,因为每个用户都有自己的身份验证ID,并且还有子节点,如地图位置和图像 如何获取活动的每个用户详细信息?
答案 0 :(得分:1)
您可以做的是使用这样的事件监听器从fbuserinfo
节点获取数据并迭代数据。这里User.class
是您创建的用户模型的类
DatabaseReference userDataReference = FirebaseDatabase.getInstance().getReference()
.child("fbuserinfo");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
User user = ds.getValue(User.class);
Log.d("User", user);
}
}
}
@Override
public void onCancelled (DatabaseError databaseError){
Log.d(TAG, "Error fetching user data - " + databaseError.getMessage());
}
}
userDataReference.addListenerForSingleValueEvent(eventListener);
然后,如果要显示数据,可以在for循环中执行,并使用if条件检查用户是否不等于当前的
答案 1 :(得分:0)
使用以下示例,您将能够记录数据库中所有用户的name
。
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference fbRef = rootRef.child("Users").child("fbusersinfo");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String name = ds.child("name").getValue(String.class);
Log.d("TAG", name);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
fbRef.addListenerForSingleValueEvent(eventListener);
输出将是:
Ahmend Abbas
mahanoor 4
如果您还需要其他属性,您可以采用相同的方式获取它们。