You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Realtime Database获取firstname返回null,求助适配RecyclerView

问题原因

你当前的代码路径mDatabase.child("users").child("firstname")完全错误——你的数据库结构里,firstname字段是嵌套在users/{uid}/{随机生成的key}层级下的,并非直接挂在users节点下,所以Firebase找不到对应数据,返回null。

解决方法

你需要遍历users节点下的所有用户UID,再遍历每个UID下的子节点,才能提取出所有firstname字段的值。

修正后的代码示例

mDatabase.child("users").get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DataSnapshot> task) {
        if (!task.isSuccessful()) {
            Log.e("firebase", "Error getting data", task.getException());
        } else {
            List<String> firstNames = new ArrayList<>();
            // 遍历所有用户UID节点
            for (DataSnapshot uidSnapshot : task.getResult().getChildren()) {
                // 遍历当前UID下的所有用户条目节点
                for (DataSnapshot userSnapshot : uidSnapshot.getChildren()) {
                    String firstName = userSnapshot.child("firstname").getValue(String.class);
                    if (firstName != null) {
                        firstNames.add(firstName);
                        Log.d("firebase", "Firstname: " + firstName);
                    }
                }
            }
            // 将收集到的firstNames列表传给RecyclerView适配器
            // yourRecyclerViewAdapter.setData(firstNames);
            // yourRecyclerViewAdapter.notifyDataSetChanged();
        }
    }
});

适配RecyclerView的补充说明

如果要把数据展示在RecyclerView中:

  • 先创建字符串列表存储所有firstname
  • 遍历完成后,将列表传递给适配器并调用刷新方法
  • 确保适配器已配置好字符串类型的数据展示逻辑

内容的提问来源于stack exchange,提问作者Ayoub Bentameur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 20:12:42