Firebase实时数据库:使用AddChildEventListener时如何获取ChildrenCount?

时间:2018-10-21 11:08:35

标签: java android firebase firebase-realtime-database

我想做的是像使用AddChildEventListener一样使用addListenerForSingleValueEvent来获得孩子的数量。

我的意思是

thisRoom.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        int numberOfPlayers = (int) dataSnapshot.getChildrenCount();

现在我可以得到thisRoom的孩子了,但我想知道是否有一种方法可以使用AddChildEventListener做同样的事情。

2 个答案:

答案 0 :(得分:2)

ChildEventListener中的方法在各个子节点上触发,并且不携带全部结果的知识。获取ChildEventListener中子节点计数的唯一方法是保留自己的计数器,在onChildAdded中递增,然后在onChildRemoved中递减。这为您提供了一个不断发展的计数器:一个数字,反映您的客户端代码已处理了多少个子代。

要获取孩子数量的绝对计数,请使用ValueEventListener。请注意,将ChildEventListenerValueEventListener都附加到相同的位置/查询将仅传输一次数据。因此,附加两种类型的侦听器(每个用例一个)都没有任何惩罚。

另请参阅:

答案 1 :(得分:0)

在firebase firestore中,我们可以调用方法datasnapshot.size();,该方法返回一个Int值,您可以在firebase中实时尝试此方法。希望这会有所帮助。