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
相关产品推荐
相关产品推荐

