我想做的是像使用AddChildEventListener
一样使用addListenerForSingleValueEvent
来获得孩子的数量。
我的意思是
thisRoom.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
int numberOfPlayers = (int) dataSnapshot.getChildrenCount();
现在我可以得到thisRoom的孩子了,但我想知道是否有一种方法可以使用AddChildEventListener
做同样的事情。
答案 0 :(得分:2)
ChildEventListener
中的方法在各个子节点上触发,并且不携带全部结果的知识。获取ChildEventListener
中子节点计数的唯一方法是保留自己的计数器,在onChildAdded
中递增,然后在onChildRemoved
中递减。这为您提供了一个不断发展的计数器:一个数字,反映您的客户端代码已处理了多少个子代。
要获取孩子数量的绝对计数,请使用ValueEventListener
。请注意,将ChildEventListener
和ValueEventListener
都附加到相同的位置/查询将仅传输一次数据。因此,附加两种类型的侦听器(每个用例一个)都没有任何惩罚。
另请参阅:
答案 1 :(得分:0)
在firebase firestore中,我们可以调用方法datasnapshot.size();
,该方法返回一个Int值,您可以在firebase中实时尝试此方法。希望这会有所帮助。