为什么此ChildEventListener未从firebase节点读取数据?

为什么此ChildEventListener未从firebase节点读取数据?,firebase,firebase-realtime-database,kotlin,Firebase,Firebase Realtime Database,Kotlin,我有一个对firebase节点的查询,其中ChildEventListener显示在图像链接中 现在当我运行这个代码时 mMessageRef.child(ScrollAppUtils.firebaseId).child(child.key).orderByKey().limitToLast(1).addChildEventListener(object : ChildEventListener { override fun onCancelled(p0: DatabaseError

我有一个对firebase节点的查询,其中ChildEventListener显示在图像链接中

现在当我运行这个代码时

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工作得很好,但我与该侦听器有一些其他问题,因此我不得不使用此侦听器。请告诉我我做错了什么

为位置(或查询)以外的每个子级调用
onchildaded
方法。如果没有匹配的子节点,
onchildaded
将不会被调用

如果要检测没有子节点的情况,还需要使用
ValueEventListener

另见:

  • (这个问题实际上是重复的)

感谢您的回复。我现在正在使用ValueEventListener