我有以下树结构
[
我需要单独获取名称和详细信息以及他们的孩子。
我已经这样做了,但是在执行时没有运行并关闭应用程序:
info = FirebaseDatabase.getInstance().getReference();
info.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot infoSnapshot: dataSnapshot.getChildren()) {
Log.i(TAG, infoSnapshot.child(info.toString()).getValue(String.class));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.i(TAG, "onCancelled", databaseError.toException());
}
});
如何解决这个问题?
答案 0 :(得分:3)
要从根节点获取数据,请使用以下代码:
info = FirebaseDatabase.getInstance().getReference();
info.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
String child = ds.getKey();
Log.d("TAG", child);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.i(TAG, "onCancelled", databaseError.toException());
}
});
输出将是:
details
name
答案 1 :(得分:0)
删除此行无用:
mDatabase= FirebaseDatabase.getInstance().getReference();
并将此更改为
info = FirebaseDatabase.getInstance().getReference(mDatabase.toString());
到
info = FirebaseDatabase.getInstance().getReference();
也是这样:
Log.i(TAG, infoSnapshot.child("root").getValue(String.class));// the root node doesn't exists
答案 2 :(得分:0)
获得数据快照后,您可以轻松迭代收到的所有数据..
info = FirebaseDatabase.getInstance().getReference();
info.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot infoSnapshot:dataSnapshot.child("details").getChildren()) {
Log.i(TAG, infoSnapshot.getValue(String.class));
}
for(DataSnapshot infoSnapshot:dataSnapshot.child("name").getChildren()){
Log.i(TAG, infoSnapshot.getValue(String.class));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.i(TAG, "onCancelled", databaseError.toException());
}
});