无法使用地图获取Firebase数据库中的所有子数据? [英] Unable to get All child data in Firebase Database using a Map?

查看:130
本文介绍了无法使用地图获取Firebase数据库中的所有子数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图显示位于我的数据库树中的所有孩子名字。 我的数据库树我使用Map来实现:

  GenericTypeIndicator< Map< String,Object>> m = new GenericTypeIndicator< Map< String,Object>>(){}; 
地图< String,Object> map = snapshot.getValue(m);
字符串用户名=(String)map.get(name);
displayName.setText(username); //显示名称

数据转化为recyclerView。但由于某些原因,而不是所有的名字(伊娃,史密斯,公主),我只是一个最新的创建公主在我的recyclerView布局(公主,公主,公主)显示3次。任何人有任何想法我做错了什么?假设您有一个名为用户的节点,您可以在其中找到个用户所有这些 uid's ,要得到所有这些名字,请使用下面的代码。
$ b

  DatabaseReference yourRef = FirebaseDatabase.getInstance()。getReference()。child(users ); 
ValueEventListener eventListener = new ValueEventListener(){
@Override $ b $ public void onDataChange(DataSnapshot dataSnapshot){
String userId =(String)dataSnapshot.getKey();

DatabaseReference userIdRef = FirebaseDatabase.getInstance()。getReference()。child(users)。child(userId);
ValueEventListener eventListener = new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
String name =(String)dataSnapshot.child(name)。getValue ();
Log.d(TAG,name);
}

@Override
public void onCancelled(DatabaseError databaseError){}
};
userIdRef.addListenerForSingleValueEvent(eventListener);
}

@Override
public void onCancelled(DatabaseError databaseError){}
};
yourRef.addListenerForSingleValueEvent(eventListener);

希望有帮助。


I am trying to display all child "name" located in my database tree. My Database tree I used the Map to do so:

GenericTypeIndicator<Map<String, Object>> m = new GenericTypeIndicator<Map<String, Object>>() {};
Map<String, Object> map = snapshot.getValue(m);
String username = (String) map.get("name");
displayName.setText(username);// Display the name

I am displaying all the data into a recyclerView. But for some reasons instead of getting all names(Eva, smith, princess), I am only one which is the lastest one created "princess" being displayed 3 times in my recyclerView layout(princess, princess, princess). Anyone has any idea what I am doing wrong?

解决方案

Assuming that you have a node named users in which you have all those uid's, to get all those name, please use the code below. Is the easiest way to achieve this.

DatabaseReference yourRef = FirebaseDatabase.getInstance().getReference().child("users");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String userId = (String) dataSnapshot.getKey();

        DatabaseReference userIdRef = FirebaseDatabase.getInstance().getReference().child("users").child(userId);
        ValueEventListener eventListener = new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                 String name = (String) dataSnapshot.child("name").getValue();
                 Log.d("TAG", name);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {}
        };
        userIdRef.addListenerForSingleValueEvent(eventListener);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
yourRef.addListenerForSingleValueEvent(eventListener);

Hope it helps.

这篇关于无法使用地图获取Firebase数据库中的所有子数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆