知道为什么这不起作用?
mFirestore.collection("DR1")
.document(UserID)
.collection("Story")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (DocumentSnapshot document : task.getResult()) {
spinnerArray.add(String.valueOf(document.getId()));
}
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
});
微调器下拉工作(没有默认选择,只是空),但在选择时,它也不会出现。没有任何错误。我在选择中有setOnItemSelectedListener
到Toast.maketext
,但也没有出现。
但是一旦我添加了:
spinnerArray.add("test");
在Firestore数据库调用(for循环)之前,一切正常。 (默认选择&#34;测试&#34;在下拉列表中,当我选择另一个条目时,Toast.maketext
出现,并且选择出现在微调器上)
再次感谢。
答案 0 :(得分:1)
这种情况正在发生,因为您没有在具有异步行为的spinnerArray
方法中定义onComplete()
。要解决此问题,请在spinnerArray
方法中移动onComplete()
的声明。要显示记录,还需要在方法内设置适配器。有关详细信息,请参阅此 post 的回答。我还建议您观看此视频 Asynchronous Firebase API - Cloud Firestore and Android ,以便更好地理解。