我在“subject”节点上有一个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放到它下面的节点上,因为它是一个push()节点,并且会有数百个..
答案 0 :(得分:1)
Firebase API documentation for Android并未对儿童事件说太多。 (JavaScript documentation更全面。)
但是,其中一个Android guides:
中有更详细的内容每次修改子节点时都会触发 onChildChanged()回调。 这包括对子节点后代的任何修改。
文档没有明确声明其他人不包含子节点的后代,但我的经验 - 以及您的经验 - 表明onChildChanged()
回调是唯一一个为子节点的后代触发的回调
不幸的是,Android API与JavaScript和iOS API的区别在于,这将使您难以解决问题。
使用JavaScript和iOS API,可以收听特定事件。例如,使用JavaScript,我会调用on("child_removed", (snapshot) => { ... })
。使用Android API,所有子事件都已合并到一个侦听器中 - 据我所知 - 您无法添加只监听与{对应的事件的ChildEventListener
{1}}功能。