我在Firebase实时数据库中具有此结构:
我该如何计算数据并将其显示在我的应用中,我应该使用哪个侦听器来获取所有孩子?
答案 0 :(得分:1)
有几种方法可以实现此目的。 我使用以下方式:
FirebaseDatabase.getInstance()
.getReference()
.child("demografi")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot dataSnap : dataSnapshot.getChildren()) {
YourObject object = dataSnap.getValue(YourObject.class);
// Use your object as needed
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
dataSnapshot
返回所引用的子级。一旦拥有了它,您所要做的就是遍历它们,您可以根据需要访问“所有孩子”。
答案 1 :(得分:0)
FirebaseDatabase.getInstance()
.getReference()
.child("demografi")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
/** Qty of data in demografi, this is what you want. */
long Count = dataSnapshot.getChildrenCount();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
如果要实时监视数据计数,
您必须将[addListenerForSingleValueEvent]替换为[addValueEventListener]。
答案 2 :(得分:0)
我会喜欢这种方式-
String email, gender, nama;
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("demografi");
databaseReference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
// To get children count
dataSnapshot.getChildrenCount();
email = dataSnapshot.child("email").getValue().toString();
gender = dataSnapshot.child("gender").getValue().toString();
nama = dataSnapshot.child("nama").getValue().toString();
// and so on..
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s){
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 3 :(得分:0)
如果没有模型类,则可以简单地使用String类。因此,要获取所有孩子的数据,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference demografiRef = rootRef.child("demografi");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String nama = ds.child("nama").getValue(String.class);
Log.d("TAG", nama);
}
Log.d("TAG", String.valueOf(dataSnapshot.getChildrenCount()));
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
demografiRef.addListenerForSingleValueEvent(valueEventListener);
logcat中的输出将是所有用户的所有名称。如您所见,第二条日志语句将打印您的孩子总数。