2016-08-13 15 views
1

enter image description hereonChildRemovedリスナーFirebaseでネストされたノードが

動作しないために私はこのようなノード「科目」にChildEventListenerを持っている:私は丸で囲まれた項目を削除するとonChildRemovedが呼び出されません

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) { 

     } 
    }); 

青。 青いアイテムが削除されているかどうかはどのように分かりますか?

それがプッシュ()ノードであり、そのうちの何百もあるだろうので、私はそれの下ノードにChildEventListenerを入れたくない...

答えて

1

Firebase API documentation for Androidは、子イベントについてはあまり言っていません。 (JavaScript documentationもう少し包括的である。)

しかし、詳細はAndroid guidesのいずれかである:

onChildChanged()コールバックは、子ノードが変更されるたびにトリガされます。 これには、子ノードの子孫への変更が含まれます。あなた - -

文書は、明示的に他の人が子ノードの子孫が、私の経験が含まれていないと述べているしません​​コールバックは、子ノードの子孫のためにトリガされた唯一のものであることを示唆しています。

残念ながら、Android APIはJavaScriptとiOS APIと異なり、問題を解決するのが難しくなります。

JavaScriptとiOS APIを使用すると、特定のイベントを聴くことができます。たとえば、JavaScriptを使用して、私はon("child_removed", (snapshot) => { ... })と呼んでいます。 Android APIを使用すると、すべての子イベントが1つのリスナーに組み込まれています。私が見る限り、onChildRemoved関数に対応するイベントだけをリッスンするChildEventListenerを追加することはできません。

関連する問題