我正面临一种情况,我想检索字段值(时间)并将它们按排序顺序存储在ArrayList中,以便以后处理它们。我的文档中有24个值(00-23)。我想在循环迭代时以升序将值存储在索引中。值00应该存储在timesList(0)上,而23应该存储在timesList(23)上。但是循环的运行速度比Firebase代码快得多,而且我无序接收值。
final DocumentReference docRef = db.collection("parent").document(child);
docRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
for(int tcounter=0;tcounter<24;tcounter++){
if(tcounter<10){
documentSnapshot.getString("0"+String.valueOf(tcounter));
timesList.add(documentSnapshot.getString("0"+String.valueOf(tcounter)));
}
else{
documentSnapshot.getString(String.valueOf(tcounter));
timesList.add(documentSnapshot.getString(String.valueOf(tcounter)));
if(tcounter==23){
valuesdownloaded="yes";
}
}
}
}
});
答案 0 :(得分:0)
不一定是解决问题的方法,但是这段代码要短得多,并且与当前操作相同:
SchedulerFactoryBean
除此之外,我怀疑您正在基于overwriteExistingjobs = true
的值进行操作。您将要注意,数据是从Firebase异步加载的,并且需要数据库中数据的任何代码都应位于final DocumentReference docRef = db.collection("parent").document(child);
docRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
for(int tcounter=0;tcounter<23;tcounter++){
String key = (tcounter<10) ? "0"+String.valueOf(tcounter) : String.valueOf(tcounter);
timesList.add(documentSnapshot.getString(key));
}
valuesdownloaded="yes";
}
});
内部或从那里调用。有关示例,请参见我的详细说明:[res.on.exception.handling]/4