无法使用地图获取Firebase数据库中的所有子数据?

时间:2017-05-24 21:49:47

标签: android firebase firebase-realtime-database

我试图展示所有的孩子"姓名"位于我的数据库树中。 My Database tree我使用地图来执行此操作:

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

我将所有数据显示到recyclerView中。但出于某些原因,而不是得到所有的名字(伊娃,史密斯,公主),我只是最新创造的一个&#34;公主&#34;在我的recyclerView布局(公主,公主,公主)中显示3次。任何人都知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

假设您有一个名为users的节点,其中包含所有这些uid's,请获取所有这些名称,请使用以下代码。是实现这一目标的最简单方法。

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);

希望它有所帮助。