Android 如何在firebase中获取子节点的值

Android 如何在firebase中获取子节点的值,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我想获取所有“user”的值,但调用datasnapshot.getValue返回null FirebaseDatabase.getInstance().getReference("data").addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) {

我想获取所有“user”的值,但调用datasnapshot.getValue返回null

FirebaseDatabase.getInstance().getReference("data").addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    for (DataSnapshot data : dataSnapshot.getChildren()) {
                        if (dataSnapshot.getKey().equals("user"))
                             username = data.getValue().toString();

                            Toast.makeText(getApplicationContext(), "sender is " + username, Toast.LENGTH_SHORT).show();
                    }
                }

使用数据库结构创建一个类

public class Data {
    private String msgbody;
    private String mtime;
    private String uname;
    private String user;
    public Data() {
    }
    public String getMsgbody() {
        return msgbody;
    }
    public void setMsgbody(String msgbody) {
        this.msgbody = msgbody;
    }
    public String getMtime() {
        return mtime;
    }
    public void setMtime(String mtime) {
        this.mtime = mtime;
    }
    public String getUname() {
        return uname;
    }
    public void setUname(String uname) {
        this.uname = uname;
    }
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }
}
然后


您需要创建另一个更深的for循环1级别(在for循环内部)
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
       Data obj = snapshot.getValue(snapshot.getValue(Data.class);
}