我的程序无法从Firebase中的addChildEventListener获取结果

时间:2016-06-26 15:18:57

标签: android firebase firebase-realtime-database

数据库结构

questions
  questionId
    options
     optionId
       label         
       score
       ...

首先,我在代码中创建了一个数据库引用。

  mQuestionDatabaseReference = FirebaseDatabase.getInstance().getReference("questions").child(questionId).child("options").child(optionId);

然后在选项中我使用事务更改了得分值。

mQuestionDatabaseReference.child("score").runTransaction(new Transaction.Handler() { ...

我可以成功更新分数值。现在我想知道数据库中的分数是否已经更新,以便我可以使用 addChildEventListener 更新我的UI。

 mQuestionDatabaseReference.addChildEventListener(new ChildEventListener() {..

这个没关系。现在,我只想知道选项的得分子是否更新而不是整个选项。所以我做了

mQuestionDatabaseReference.child("score").addChildEventListener(new ChildEventListener() {..

现在,当我成功更新选项时,这个新的子事件监听器无法获得结果。

1 个答案:

答案 0 :(得分:3)

您在ChildEventListener中添加/optionId/score得分实际上没有任何子项,因此永远不会触发回调

在这种情况下,您应该使用ValueEventListener

mQuestionDatabaseReference.child("score").addValueEventListener(
    new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            //dataSnapshot.getValue ...
        }
});

firebase events documentation中获取更多信息。