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

标签 java android firebase firebase-realtime-database android-recyclerview

我想在 Firebase RecyclerView 中显示 Firebase 中没有用户 ID 的所有用户的数据。怎么可能?我正在开发我的第一个 Firebase 项目,并且我是 Firebase 的新手。这是我的代码,但它仅显示登录用户数据。

java

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dash_board);

        recyclerView=findViewById(R.id.recycler);

        mAuth=FirebaseAuth.getInstance();
        FirebaseUser mUser=mAuth.getCurrentUser();
        final String uId=mUser.getUid();
        mDatabase= FirebaseDatabase.getInstance().getReference().child("UserName").child(uId);
        mDatabase.keepSynced(true);

        LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);
        linearLayoutManager.setReverseLayout(true);
        linearLayoutManager.setStackFromEnd(true);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(linearLayoutManager);
    }

    @Override
    protected void onStart() {
        super.onStart();

        FirebaseRecyclerAdapter<Data, DashBoard.MyViewHoler>adapter= new FirebaseRecyclerAdapter<Data, MyViewHoler>(Data.class, R.layout.item_data, DashBoard.MyViewHoler.class,mDatabase) {

            @Override
            protected void populateViewHolder(MyViewHoler myViewHoler, Data data, int i) {
                myViewHoler.setName(data.getNamee());
                myViewHoler.setCity(data.getCityy());
                myViewHoler.setCell(data.getCelll());
                myViewHoler.setFund(data.getFundd());

            }
        };

        recyclerView.setAdapter(adapter);
     }

firebase

database structure image

最佳答案

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

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 库在列表中显示您的元素,请参阅我在以下帖子中的回答:

关于java - 如何使用 Firebase 向管理员显示所有登录用户数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60093683/

相关文章:

java - 有没有办法在 Spring Boot 微服务中完成异步进程响应时处理它们?

java - Java 中的正则表达式与文本文件中的任何内容都不匹配

android - 显示下拉列表时微调器的状态是什么?

javascript - 在 Firebase 数据库 (Web) 中读取/写入嵌套数据

java - Android 8.0 Oreo 输入类型 numberPassword 不起作用 - 可见

android - gradle 构建变体的文件夹命名约定

android - 在 Android 中制作平行四边形形状

Swift - 设置 APNSToken Firebase Messaging 的正确方法

swift - 从 firebase 读取数据以用于 swift 中的登录页面

Javafx double 变量,具有两位小数