Voglio rimuovere listener addValueEventListener da un ref di firebase quando il valore del campo particolare è true.removeEventListener non rimuove il listener in firebase
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
}
});
Ma addValueEventListener non è sempre rimosso e si chiama per questo ref Firebase. Quindi, per favore suggeriscimi come rimuovere l'ascoltatore da qualsiasi ref firebase se necessario.
vostro 'valueListener' è sempre' null' – talex
è possibile rimuovere l'ascoltatore all'interno del callback con 'se (titolo) {fb.removeEventListener (questo); } '. Non correlato: la maggior parte dei lettori di questo codice assumerà che 'title' è una stringa. Potresti voler usare un nome di variabile che sia un po 'più intuitivo da interpretare come booleano, ad es. 'IsFinished'. –
valueListener ha un riferimento quando viene aggiunto listener @talex – Keshav