Spinner与Firestore的document.getId不兼容

时间:2018-03-12 10:59:02

标签: java android firebase spinner google-cloud-firestore

知道为什么这不起作用?

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());
                    }
                }
            });

微调器下拉工作(没有默认选择,只是空),但在选择时,它也不会出现。没有任何错误。我在选择中有setOnItemSelectedListenerToast.maketext,但也没有出现。

但是一旦我添加了:

spinnerArray.add("test"); 

在Firestore数据库调用(for循环)之前,一切正常。 (默认选择&#34;测试&#34;在下拉列表中,当我选择另一个条目时,Toast.maketext出现,并且选择出现在微调器上)

再次感谢。

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为您没有在具有异步行为的spinnerArray方法中定义onComplete()。要解决此问题,请在spinnerArray方法中移动onComplete()的声明。要显示记录,还需要在方法内设置适配器。有关详细信息,请参阅此 post 的回答。我还建议您观看此视频 Asynchronous Firebase API - Cloud Firestore and Android ,以便更好地理解。