知道为什么这不起作用吗?
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 循环)之前,一切正常。 (下拉列表中默认选择“测试”,当我选择另一个条目时,会出现 Toast.maketext
,并且选择会出现在微调器上)
再次感谢。
最佳答案
发生这种情况是因为您没有在 onComplete()
方法中定义 spinnerArray
,该方法具有异步行为。要解决此问题,请将 spinnerArray
的声明移至 onComplete()
方法内。要显示记录,您还需要在方法内设置适配器。欲了解更多信息,请参阅我的回答 post 。我还建议您观看此视频, Asynchronous Firebase API - Cloud Firestore and Android ,以便更好地理解。
关于java - Spinner 无法与 Firestore 的 document.getId 配合良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49233561/