2017-09-27 4 views
-1

私は、私はこの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?) {} 
    }) 

このコードを実行すると、ノードがを見つけていない場合に、画像のリンクに示すChildEventListenerとfirebaseノードにクエリ enter image description here

は今、このリスナーは、単に動作しない持っています私は、ValueEventListenerが非常にうまく動作しているはずだと思いますが、このリスナーを使用するように強制されているので、そのリスナーにいくつかの問題があります。ここで間違っていることは何ですか?

答えて

2

onChildAddedメソッドは、場所(またはクエリ)以外の各子に対して呼び出されます。一致する子ノードがない場合、onChildAddedは呼び出されません。

子ノードが存在しない状況を検出する場合は、ValueEventListenerも使用する必要があります。

も参照してください。

+0

おかげで(この質問は実際の重複です)。私は今、ValueEventListenerを使用しています – JOt

関連する問題