Java 如何使用Firebase向管理员显示所有登录用户数据?

Java 如何使用Firebase向管理员显示所有登录用户数据?,java,android,firebase,firebase-realtime-database,android-recyclerview,Java,Android,Firebase,Firebase Realtime Database,Android Recyclerview,我想在firebaseRecyclerView中显示来自firebase且没有用户id的所有用户的数据。怎么可能呢?我正在从事我的第一个firebase项目,我是firebase的新手。这是我的代码,但它只显示登录用户数据 爪哇 @覆盖 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity\u仪表板); recyclerView=fi

我想在firebase
RecyclerView
中显示来自firebase且没有用户id的所有用户的数据。怎么可能呢?我正在从事我的第一个firebase项目,我是firebase的新手。这是我的代码,但它只显示登录用户数据

爪哇

@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u仪表板);
recyclerView=findViewById(R.id.recycler);
mAuth=FirebaseAuth.getInstance();
FirebaseUser mUser=mAuth.getCurrentUser();
最后一个字符串uId=mUser.getUid();
mDatabase=FirebaseDatabase.getInstance().getReference().child(“用户名”).child(uId);
mDatabase.keepSynced(true);
LinearLayoutManager LinearLayoutManager=新的LinearLayoutManager(此);
linearLayoutManager.setReverseLayout(true);
linearLayoutManager.setStackFromEnd(true);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(linearLayoutManager);
}
@凌驾
受保护的void onStart(){
super.onStart();
FirebaseRecyclerAdapteradapter=新的FirebaseRecyclerAdapter(Data.class、R.layout.item_数据、DashBoard.MyViewHoler.class、mDatabase){
@凌驾
受保护的void populateViewHolder(MyViewHoler MyViewHoler,数据数据,int i){
myViewHoler.setName(data.getNamee());
myViewHoler.setCity(data.getCityy());
myViewHoler.setCell(data.getCelll());
myViewHoler.setFund(data.getFundd());
}
};
recyclerView.setAdapter(适配器);
}
火基


要解决此问题,请使用以下代码行:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("UserName").child(uid);
ValueEventListener valueEventListener = 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(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
uidRef.addListenerForSingleValueEvent(valueEventListener);
logcat中的结果将是:

Azar khan
khan
...
如果您想使用Firebase UI库在列表中显示您的元素,请参阅以下帖子中的答案:


您应该将数据库引用到
用户名
,然后对每个用户进行
迭代
,以获取数据。检查以下内容:

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("UserName");
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        for(DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
            for(DataSnapshot childSnapshot: userSnapshot.getChildren()) {
                Data data = childSnapshot.getValue(Data.class);


            }
        }
    }

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

    }
});

这个代码怎么了?另外,请将您的数据库结构添加为JSON文件或至少是屏幕截图。我的代码没有错,我只想看看您是否有任何问题,没有登录就无法显示所有数据此代码仅用于登录用户。我的意思是,管理员可以显示用户在firebase中添加的所有用户数据。恐怕我不明白。你能更具体一点吗?我正在制作一个应用程序,管理员和用户登录后,用户可以添加基金rzr的详细信息,管理员可以显示捐赠者给用户的用户名和总资金。我不能向管理员显示所有这些数据。我怎么办。?我没有主意!我能帮你了解其他信息吗?如果你认为我的答案对你有帮助,请考虑通过点击复选来接受它。✔️) 在投票箭头下方的左侧。应该将颜色更改为绿色。我非常感谢。谢谢!NullPointerException:尝试调用虚拟方法'com.google.firebase.database.ChildEventListener com.google.firebase.database.Query.addChildEventListener(com.google.firebase.database.ChildEventListener)'在空对象引用上,但我已初始化
mDatabase
,可能是其他代码的错误。您能否直接使用
FirebaseDatabase.getInstance().getReference().child(“用户名”)进行尝试.addListenerForSingleValueEvent…
并检查它可能与您的变量冲突,我已更改了名称。您可以尝试使用更新的代码并告诉我吗?@waqar ahmed,您检查了更新的答案了吗?这对您有帮助吗?
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("UserName");
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        for(DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
            for(DataSnapshot childSnapshot: userSnapshot.getChildren()) {
                Data data = childSnapshot.getValue(Data.class);


            }
        }
    }

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

    }
});