首页 > 解决方案 > Firebase 实时数据库:使用 AddChildEventListener 时如何获取 ChildrenCount?

问题描述

我想要做的是让AddChildEventListener我们可以使用的孩子的数量使用addListenerForSingleValueEvent.

我是说

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

现在我可以得到 thisRoom 的孩子,但我想知道是否有办法使用AddChildEventListener.

标签: javaandroidfirebasefirebase-realtime-database

解决方案


单个子节点上的触发器中的方法,ChildEventListener不携带整个结果的知识。获取 a 中子节点计数的唯一方法ChildEventListener是保留自己的计数器,在 中递增,在 中onChildAdded递减onChildRemoved。这为您提供了一个运行计数器:一个反映您的客户端代码已经处理了多少孩子的数字。

要获得孩子数量的绝对计数,请使用ValueEventListener. 请注意,将 aChildEventListener和 a附加ValueEventListener到同一位置/查询,只会传输一次数据。因此,附加两种类型的侦听器不会受到任何惩罚,每个用例一个。

另见:


推荐阅读