提问者:小点点

如何从节点获取列表,并在回收视图中使用该列表从firebase获取数据


我有一个有聊天室的应用程序,我想在那里展示那些在聊天室里的人。当有人加入聊天室时,我把他们节点的值设置为true.像这样

正如您所看到的,我的下面也有用户的数据,我想使用Members/DocumentID列表,并使用该列表仅从profiledata节点获取那些人的数据。


共1个答案

匿名用户

您所描述的是一个相当标准的操作,称为客户端连接。 在Android中,它看起来是这样的:

String chatroomId = "-MBISFO12u2tok9CeWwi";
DatabaseReference membersRef = FirebaseDatabase.getInstance().getReference("Chatrooms/members").child(chatroomId);
DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference("Users/profiledata")
membersRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot memberSnapshot: dataSnapshot.getChildren()) {
            String uid = memberSnapshot.getKey();
            
            DatabaseReference userRef = usersRef.child(uid);
            
            userRef.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot userSnapshot) {
                    Log.i("USER", userSnapshot.child("Full name").getValue(String.class));
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                    throw databaseError.toException();
                }
            });
            
            
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
}