【发布时间】:2018-02-09 19:08:25
【问题描述】:
我的问题是如何计算 addChildEventListener 中的子节点?下面的代码适用于 addValueEventListener 并且它正确计算了我的孩子,但是当我使用 addChildEventListener 时。它不起作用。我之所以使用这个,是因为这个线程:Firebase Android count children/ badge。我试过了,但它在我的代码中不起作用。
在这张图片中,借来的书应该算为 2,但它又回到了 10:
这张图片显示了我在 firebase 中的数据库:。之所以返回 10 是因为它计算了 user.getUid() 的孩子的孩子。我只想数user.getUid()的孩子
这是我的代码的一部分:
databaseReference.child("Mark as Borrowed").child(uid).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String number = dataSnapshot.getChildrenCount()+"";
btnNumber.setText(number);
}
@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) {
}
});
【问题讨论】:
-
这是因为
onChildAdded方法中返回的DataSnapshot包含最近添加的子项。有什么具体原因需要使用ChildEventListener而不是ValueEventListener? -
每次打开活动时,检索数据时都会出现延迟。
-
延迟与网络状况有关。使用 ChildEventListener 时可能会发生同样的延迟,所以我认为您不必为此烦恼。我建议使用 Single ValueEventListener
标签: android database firebase firebase-realtime-database