以下是我的 Firebase数据库图:
根元素链接中有三个个子级。当我执行以下循环以获取所有子代时,它仅返回第一个子代的结果
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference("links");
int count=0;
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d("Firebase","Children: "+dataSnapshot.getChildren().toString()); //This gives result for all children
for (DataSnapshot ds : dataSnapshot.getChildren()) {
count++;
}
Log.d("Firebase","Count length: "+count); //Gives only "1"
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
在上面的代码中,count
应该为3,但返回1。循环仅执行一次。
但是上面代码中的以下行可以正常工作,并给出所有3个子级的结果。
Log.d("Firebase","Children: "+dataSnapshot.getChildren().toString());
问题出在哪里?感谢您的回答!
答案 0 :(得分:1)
如果要获取links
以下的孩子数,请尝试以下操作:
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d("Firebase","Children: "+dataSnapshot.getChildren().toString()); //This gives result for all children
long childCount = dataSnapshot.getChildrenCount();
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
getChildrenCount()
将返回links
下的直系子代数,在这种情况下为3
。