java - Android Firebase 获取所有用户信息问题
问题描述
我想列出注册到系统的用户。
主页:
List<User> users;
databaseReference = FirebaseDatabase.getInstance().getReference("Users");
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists())
{
for(DataSnapshot postSnapShot:dataSnapshot.getChildren())
{
User user = postSnapShot.getValue(User.class);
users.add(user);
customAdapter.notifyDataSetChanged();
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e("selam", "onCancelled: " + databaseError );
}
});
用户 Java 类
public class User {
private String email ="";
private String nickname="";
private String status="";
private String uid="";
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
图片
解决方案
你得到它是NullPointerException
因为你还没有初始化你的users
列表。要解决此问题,请使用以下代码:
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists())
{
List<User> users = new ArrayList<>(); //Initialize the list
for(DataSnapshot postSnapShot : dataSnapshot.getChildren())
{
User user = postSnapShot.child("userInfo").getValue(User.class);
users.add(user);
}
customAdapter.notifyDataSetChanged();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e("selam", "onCancelled: " + databaseError );
}
});
另请注意,我customAdapter.notifyDataSetChanged();
在 for 循环之外移动了 ,并且我还添加了.child("userInfo")
call 因为您的数据库树中有一个额外的级别。
推荐阅读
- discord.js - Discord Bot 命令不会做任何我试图修复它但无法弄清楚的事情
- sql - 如何在 Oracle sql Developer 中使用带有特殊字符的用户名访问表
- python - 使用 Python 下载 zip 文件给出 HTTP 403
- swift - 如何在另一个集合视图中创建集合视图
- kotlin - 克林特一尘不染:com.pinterest.ktlint.core.ParseException:期望参数声明
- sql - 如何从sql server中的两个表中获取不匹配和丢失的记录
- css - 在 img 上使用 object-fit 时单击图像外的事件
- c++ - 用 hypen '-' 标记字符串后,hypen 将被消除!如何在 C++98 中解决这个问题
- c# - 无法在任务内运行 ping?
- javascript - 表单提交输入未运行我的 onClick 功能