我想从DataSnapshot
使用特定价值。
我在这里附上截图,请检查并帮助我从Realtime Database
获得特定价值
实际上我正在实施chat
应用,我希望从user
获取group_list
的价值。
这是我的代码。
private void loadTotalGroupList() {
referenceMainUrl = FirebaseDatabase.getInstance().getReferenceFromUrl("https://pure-coda-174710.firebaseio.com");
referenceGroupList = referenceMainUrl.child("group_list");
//Check if child is available or not.
referenceGroupList.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
Log.e("dataSnapshot"," ==>"+dataSnapshot);
Map<String, Object> newPost = (Map<String, Object>) dataSnapshot.getValue();
Log.e("newPost"," ==>"+newPost);
Log.e("user: ","==>" + newPost.get("user")); // Here I am getting null value
} else {
Log.e("Child not found", " >>>");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
和log
显示如下。 DataSnapshot {key = group_list,value = {First Group = { - KtBH9gnTszNxcXjNu9A = {message = assaasas,user = sakib}}}}
答案 0 :(得分:0)
您正在聆听代码中的位置/group_list
。这意味着该位置的快照将包含以下内容:
/First Group
/-KtBH9gnTszNxcXjNu9A
message = "..."
user = "..."
如果您想从该位置获取用户值,您必须使用每个中间路径深入了解它:
dataSnapshot.child("First Group").child("-KtBH9gnTszNxcXjNu9A").child("user").getValue()
或更简单:
dataSnapshot.child("First Group"/-KtBH9gnTszNxcXjNu9A/user").getValue()
您无法跳过快照中的中间路径。或者,您可能希望收听更接近所需值的位置:
referenceMainUrl.child("group_list/First Group/-KtBH9gnTszNxcXjNu9A");
答案 1 :(得分:0)
此代码循环运行,为您提供所有'用户
的值"%04d"
答案 2 :(得分:0)
我已使用addChildEventListener
referenceGroupList.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {
Log.e("dataSnapshot KEY", " ==>" + dataSnapshot.getKey());
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
这里dataSnapshot.getKey()
返回它的所有子子。