java - Firebase 实时数据库:使用 AddChildEventListener 时如何获取 ChildrenCount?
问题描述
我想要做的是让AddChildEventListener
我们可以使用的孩子的数量使用addListenerForSingleValueEvent
.
我是说
thisRoom.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
int numberOfPlayers = (int) dataSnapshot.getChildrenCount();
现在我可以得到 thisRoom 的孩子,但我想知道是否有办法使用AddChildEventListener
.
解决方案
单个子节点上的触发器中的方法,ChildEventListener
不携带整个结果的知识。获取 a 中子节点计数的唯一方法ChildEventListener
是保留自己的计数器,在 中递增,在 中onChildAdded
递减onChildRemoved
。这为您提供了一个运行计数器:一个反映您的客户端代码已经处理了多少孩子的数字。
要获得孩子数量的绝对计数,请使用ValueEventListener
. 请注意,将 aChildEventListener
和 a附加ValueEventListener
到同一位置/查询,只会传输一次数据。因此,附加两种类型的侦听器不会受到任何惩罚,每个用例一个。
另见:
推荐阅读
- adobe-indesign - 在 InDesign 中预览对象的尺寸
- racket - 使用宏将一个函数调用替换为另一个函数调用
- java - Tomcat关闭时Spring Boot中Executor服务的关闭
- html - 格式化 HTML 文档时,我无法使文本正确对齐
- arrays - 使用来自另一个 4D 矩阵的数据创建/转换一个新的 4D 矩阵
- c++ - 你能用新的范围库压缩吗?
- node.js - 如何从节点 js 中的异步函数返回值并保存到詹金斯管道脚本中的变量?
- sparql - SPARQL 从 Python 中的 dbpedia 中提取实体
- ajax - 将 jquery 滑块绑定到 dom
- sql - 了解 IFNULL mysql