【问题标题】:Spinner NOT Working Well with Firestore's document.getIdSpinner 不适用于 Firestore 的 document.getId
【发布时间】:2018-03-12 10:59:01
【问题描述】:

知道为什么这不起作用吗?

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 循环)之前,一切正常。 (下拉列表中“test”的默认选择,当我选择另一个条目时,出现Toast.maketext,并且选择出现在微调器上)

再次感谢。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 谢谢,我刚刚看了你的视频。谢谢你这样做。明天晚些时候我会再处理它。
    • 嗨,Alex,我只是想告诉你,我已经按照你的建议和解决方法来解决这个问题。非常感谢!
    • 很高兴听到这个消息。干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2016-04-11
    相关资源
    最近更新 更多