removeEventListener entfernen Zuhörer in Feuerstellung

Möchte ich entfernen addValueEventListener Hörer aus einer Feuerstellung ref, wenn der Wert des bestimmten Feldes true ist.

ValueEventListener valueListener=null;

private void removeListener(Firebase fb){
    if(valueListener!=null){
        **fb.removeEventListener(valueListener);**
    }
}

String key="https://boiling-heat-3083.firebaseio.com/baseNodeAttempt/" + userId+"/"+nodeType+"/"+nodeId+"/data";
final Firebase fb = new Firebase(key);
valueListener=fb.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snap) {
        final HashMap<String, Object> data=(HashMap<String, Object>) snap.getValue();
        if( data.get("attemptFinish_"+nodeId)!=null){
            boolean title = (boolean) snap.child("attemptFinish_"+nodeId).getValue();
            if(title){
                removeListener(fb);
            }
        }
    }
    @Override
    public void onCancelled() {
        //TODO Auto-generated method stub
    }
});

Aber addValueEventListener ist nicht immer entfernt, und es ist gefordert, dass FB ref . Also bitte, schlagen Sie mich, wie zu entfernen Zuhörer von jeder FB ref, wenn erforderlich.

  • Ihre valueListener ist immer null
  • Sie können entfernen Sie den Hörer innerhalb der callback mit if (title) { fb.removeEventListener(this); }. Unrelated: die meisten Leser dieser code wird davon ausgegangen, dass title ist ein String. Sie möchten möglicherweise verwenden Sie einen Variablennamen, der ein bisschen mehr intuitiv zu interpretieren als boolean, z.B. isFinished.
  • valueListener hat eine Referenz, wenn listener Hinzugefügt, @talex
InformationsquelleAutor Keshav | 2015-06-22
Schreibe einen Kommentar