Java 如何在执行其他代码之前首先获取引用上的数据?
我需要从Firebase上的特定位置获取所有数据,并在处理这些数据之前将其放入Java 如何在执行其他代码之前首先获取引用上的数据?,java,android,firebase,Java,Android,Firebase,我需要从Firebase上的特定位置获取所有数据,并在处理这些数据之前将其放入ArrayList中。我有这样的想法: final ArrayList<String> data = new ArrayList<String>(); Firebase ref = rootRef.child("data"); ref.addListenerForSingleValueEvent(new ValueEventListener() {} @Override publ
ArrayList
中。我有这样的想法:
final ArrayList<String> data = new ArrayList<String>();
Firebase ref = rootRef.child("data");
ref.addListenerForSingleValueEvent(new ValueEventListener() {}
@Override
public void onDataChange(DataSnapshot snap) {
for (Object obj : snap.getChildren) {
data.add(obj.getValue().toString());
}
}
);
processData(data);
final ArrayList data=new ArrayList();
Firebase ref=rootRef.child(“数据”);
ref.addListenerForSingleValueEvent(新值EventListener(){}
@凌驾
公共void onDataChange(DataSnapshot快照){
用于(对象对象对象:snap.getChildren){
data.add(obj.getValue().toString());
}
}
);
过程数据(数据);
我对这类东西相当陌生,但我认为这并不好,尤其是当有大量数据需要读取,并且用户的连接速度较慢时
你知道如何解决这个问题吗?我对Firebase不太熟悉,但如果他们没有类似于Android加载程序回调“onLoadFinished(){…}”的功能,我会感到震惊。您应该在Firebase中找到类似的内容,并从中调用“processData(data)”。当检索到位置的当前数据时,将调用
onDataChange()
方法。然后将此数据作为DataSnapshot
传入。我不确定您在问什么。加载数据所需的时间与加载数据所需的时间相同。如果希望更快地调用onDataChange()
,则可能应该加载更少的数据,例如ref.orderByKey().limitToLast(10)。添加…
。但这当然取决于数据结构。@FrankvanPuffelen我想从数据库中检索所有数据,并在处理这些数据之前将其存储在列表中。这不正是您的代码目前所做的吗?