Firebase列出数据库中没有子代的所有用户

时间:2019-10-03 03:34:54

标签: android firebase firebase-realtime-database

我正在尝试在没有open_chats的情况下列出数据库中的所有用户-user_id:是

我现在在Log.println中告诉我所有用户,但是当我列出所有用户时,它不会在有效的recyclerView中打印出来。它应该列出除BlueFoot和vilewolf之外的所有用户。但这只是在我设置的日志中重复它们,如下所示。

编辑:如果我删除open_chats-User_id:是,则只有vilewolf出现在列表中。

Log Shhowing users

这是我的数据库:

Database image

这是我的代码

    private void readUsers() {
    final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();

    DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference("users");
    dbRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            mUsernames.clear();
            for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                final User user = snapshot.getValue(User.class);

                DatabaseReference dbRef2 = FirebaseDatabase.getInstance().getReference("users").child(firebaseUser.getUid()).child("open_chats").child(user.getId());
                dbRef2.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        mUsernames.clear();
                        if(dataSnapshot.getValue() == null) {
                            if(!user.getId().equals(firebaseUser.getUid())) {
                                mUsernames.add(user);
                                Log.println(Log.DEBUG, "", "Test- " + user + ", " + user.getUsername());
                            }
                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });


            }

            userAdapter = new UserAdapter(getContext(), mUsernames);
            recyclerView.setAdapter(userAdapter);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

0 个答案:

没有答案