2016-08-13 19 views
1

enter image description hereonChildRemoved用于侦听火力地堡嵌套节点不起作用

我有一个ChildEventListener这样的“科目”节点上:

mSubjectsFirebase.addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 

     } 

     @Override 
     public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

     } 

     @Override 
     public void onChildRemoved(DataSnapshot dataSnapshot) { 
      // This does not get called when I delete the blue circled item. 
     } 

     @Override 
     public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

当我删除的项目盘旋onChildRemoved不会被调用蓝色。 那么如何知道蓝色物品是否已被删除?

我不想把ChildEventListener到其下的节点,因为它是一个推()节点,将有数百人..

回答

1

Firebase API documentation for Android没有说太多关于子事件。 (该JavaScript documentation是一个小更全面。)

然而,在Android guides的一个细节:

onChildChanged()触发回调子节点随时修改。 这包括对子节点的后代的任何修改。

文档没有明确说明,其他人不包括子节点的后代,但我的经验 - 和你 - 表明​​回调是触发子节点的后代只有一个。

不幸的是,Android API与Jav​​aScript和iOS API的区别在于它很难解决您的问题。

使用JavaScript和iOS API可以侦听特定的事件。例如,使用JavaScript,我会打电话on("child_removed", (snapshot) => { ... })。使用Android API,所有子事件都被合并到单个监听器中,并且 - 就我所知 - 无法添加仅监听与onChildRemoved函数对应的事件的ChildEventListener