我在我的Android项目Firebase Firestore中使用,在我的一项活动中,我必须获取数据并将其保存在List中以便计算一些内容。问题是,无论我把代码放到哪里获取数据,这个动作总是最后一个(查看Logcat)。因此,当我尝试计算时,我的列表总是空的。如何设置首先检索数据然后继续该过程?有谁知道为什么它总是最后一个过程完成?
对不起,用葡萄牙语说了几句话,但没什么重要的
<ScintKey ScintID="2329" ... />
答案 0 :(得分:0)
有谁知道为什么它始终是最后一道工序?
因为它是异步完成的,你会得到延迟的响应。你应该在calculate
中onComplete
作为for循环之后此方法的最后一行,以确保列表包含元素
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (DocumentSnapshot document : task.getResult()) {
inversores.add(new Inversor((document.getId()),
document.getDouble("alt"),
document.getDouble("larg"),
document.getDouble("ef"),
document.getDouble("potencia"),
document.getString("marca"),
document.getString("empresa"),
document.getString("link"),
document.getBoolean("disponivel")));
Log.d("INVERSORES", "ID:" + document.getId() + " => " + document.getData(), task.getException());
}
calculate(); // call the mothod to calculate;
} else {
Log.d("INVERSORES", "Error getting documents", task.getException());
}
}