I have section of code that updates a variable by the return of a Firebase query. Outside of this section, I reference that variable and print it.
However, it seems to be executing as a async operation and prints out the variable before it has any values put in so I keep getting null
. Is there an on complete
for addListenerForSingleValueEvent
?
public Map<String, String> childKV;
public Map<String, Object> allChildren;
public getChild() {
allChildren = new HashMap<>();
DatabaseReference dbRef = fb.child("inventory");
ValueEventListener listener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot childSnap : snapshot.getChildren() {
childKV = new HashMap<>();
childKV.put(
childSnap.getKey(),childSnap.getValue()
);
allChildren.put(childSnap.getKey(), childKV);
}
}
@Override
...
};
dbRef.orderByKey().addListenerForSingleValueEvent(listener);
dbRef.removeEventListener(listener);
printChildren(allChildren);
}
public void printChildren(Map<String,Object>) {...}
Edit:
Like Update value of variable from Firebase query? but for Java. Does this mean I have to use reflection?