【发布时间】:2016-02-16 19:53:37
【问题描述】:
我需要自己存储异步的 FireBase getValue 方法的结果。我不能使用“onPostExecute()”之类的东西,而且出于我的目的,我不能将所有操作“执行到 onDataChange()”中,因为我需要在未来的其他活动中提供一些参考。
这里是我的 sn-p 检索数据:
List<Village> villages = new LinkedList<>();
Firebase ref = new Firebase("MYFIREBASEURL").child("village");
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
spinnerArray.clear();
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
Village v = postSnapshot.getValue(Village.class);
villages.add(v);
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
如果我尝试从“onDataChange”中读取村庄,对于他的异步生活,我自然会得到 null 值。有办法确保 onDataChange 被调用?
【问题讨论】:
-
您需要将您的需求重新表述为“每当数据发生变化时,我想做 ABC”。或者您可以等待数据,这可能只是一般不推荐。有关详细信息/示例,请参阅此问答:stackoverflow.com/questions/33203379/…
标签: android firebase asynchronous firebase-realtime-database synchronization