【发布时间】:2018-11-08 04:04:01
【问题描述】:
我有一段代码通过返回 Firebase 查询来更新变量。在本节之外,我引用该变量并打印它。
但是,它似乎作为异步操作执行,并在变量输入任何值之前打印出变量,所以我不断收到null。 addListenerForSingleValueEvent 有 on complete 吗?
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>) {...}
编辑:
类似于Update value of variable from Firebase query?,但用于 Java。这是否意味着我必须使用反射?
【问题讨论】:
标签: java firebase firebase-realtime-database nosql