为什么这个ChildEventListener不从Firebase节点读取数据?

我有一个查询与图像链接中显示的ChildEventListener firebase节点 在这里输入图像描述

现在当我运行这个代码

mMessageRef.child(ScrollAppUtils.firebaseId).child(child.key).orderByKey().limitToLast(1).addChildEventListener(object : ChildEventListener { override fun onCancelled(p0: DatabaseError?) {} override fun onChildMoved(p0: DataSnapshot?, p1: String?) {} override fun onChildChanged(p0: DataSnapshot?, p1: String?) {} override fun onChildAdded(p0: DataSnapshot?, p1: String?) { Logger.d("inside onChild Added") if (p0!!.hasChildren()) { var lastMessage = p0.getValue(MessagesTwo::class.java) var dialog = DefaultDialog(child.key, user.metaData.profileImage, user.metaData.name, arrayListUser, lastMessage, 2) if (!listDialog.contains(dialog)) { listDialog.add(dialog) Logger.d(listDialog.size) dialogListAdapter.setItems(listDialog) dialogListAdapter.notifyDataSetChanged() } else { Logger.d("inside updateItemByID : ") Logger.json(Gson().toJson(dialog)) dialogListAdapter.updateItemById(dialog) dialogListAdapter.notifyDataSetChanged() } } } override fun onChildRemoved(p0: DataSnapshot?) {} }) 

这个监听器根本不工作,当一个节点没有找到 ,我认为应该作为ValueEventListener工作得很好,但我有一些其他问题与该监听器,所以我不得不使用这个监听器。 请建议我在这里做错了什么?

为每个不是该位置(或查询)的孩子调用onChildAdded方法。 如果没有匹配的子节点,则不会调用onChildAdded

如果你想检测没有子节点的情况,你(也)需要使用ValueEventListener

另请参阅:

  • Firebase onChildAdded在没有数据时不会调用 (这个问题实际上是重复的)
  • 我可以确定查询是否找不到具有指定范围内的值的任何子项?
  • 如果firebase网址不存在,我们会尝试添加一个侦听器,会发生什么情况?
  • Firebase queryOrderedbyChild不返回空值