【问题标题】:Unable to get All child data in Firebase Database using a Map?无法使用地图获取 Firebase 数据库中的所有子数据?
【发布时间】:2017-05-24 21:49:46
【问题描述】:

我正在尝试显示位于我的数据库树中的所有子“名称”。 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 中。但是由于某些原因,我没有得到所有的名字(Eva、smith、princess),我只是一个在我的 recyclerView 布局(公主、公主、公主)中显示 3 次的最新创建的“公主”。任何人都知道我做错了什么?

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    假设您有一个名为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);
    

    希望对你有帮助。

    【讨论】:

    • 感谢您的回复,但.child(uid) 中的uid 是什么意思?
    • uid 是您的uid1uid2 等发生的变量。您需要拥有 uid 才能在您的 DatabaseReference 中使用它。
    • 但如果我没有。我想要做的是让我的节点“用户”中所有名为“名称”的孩子。由于每个用户的 uid 总是不同的原因,所以我使用 Map 跳过用户的 uid 以便仅在每个用户的 uid 中获取子“名称”。
    • DatabaseReference yourRef = FirebaseDatabase.getInstance().getReference().child("users").child(uid);我认为使用这个只会让我得到特定用户的值名称,因为 uid
    • 在这种情况下,我认为DatabaseReference 是错误的,因为代码可以正常工作。您能否添加更详细的数据库图片,包括根目录?
    猜你喜欢
    • 2019-02-03
    • 2016-12-22
    • 2021-10-25
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多