I want to remove addValueEventListener listener from a firebase ref when value of particular field is true.
ValueEventListener valueListener=null;
private void
You can remove the listener from within the callback with:
ref.removeEventListener(this);
So a complete fragment:
String key="https://boiling-heat-3083.firebaseio.com/baseNodeAttempt/" + userId+"/"+nodeType+"/"+nodeId+"/data";
final Firebase ref = new Firebase(key);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snap) {
if (snap.hasChild("attemptFinish_"+nodeId) {
boolean isFinished = (boolean) snap.child("attemptFinish_"+nodeId).getValue();
if(isFinished){
ref.removeEventListener(this);
}
}
}
@Override
public void onCancelled() {
// TODO Auto-generated method stub
}
});
I removed the HashMap
, instead using the methods of the DataSnapshot
to accomplish the same. I also renamed a few variables to be clearer/more idiomatic.