【问题标题】:Saving Strings from Firestore in an ArrrayList in Java将 Firestore 中的字符串保存在 Java 的 ArrayList 中
【发布时间】:2023-03-03 20:43:01
【问题描述】:

我目前正在尝试创建一个提出问题并显示答案的应用。我将它们保存为 Firestore 上的文档(集合中的每个文档都有一个字符串表示问题,另一个字符串表示答案)。 我正在尝试读取该集合中的每个文档(使用 for 循环?),然后将答案保存在一个 arrayList 中,将问题保存在另一个中。我只收到一条错误消息,说“尝试在空对象引用上调用虚拟方法 'java.lang.Object java.util.ArrayList.get(int)'”。

点击继续按钮后:

QuestionView.setText(randomSpieler + ", " + Question);

将问题保存在数组列表中的函数代码:

public void get_questions(){
    colref_QUESTIONS.get()
        .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
            @Override
            public void onSuccess(QuerySnapshot queryDocumentSnapshots) {

                for(QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots){
                    String question = documentSnapshot.getString("question");
                    String answer = documentSnapshot.getString("answer");
                    questions.add(question);
                    answers.add(answer);
                    nrofquestions++;
                }
            }  
        });
}

【问题讨论】:

  • 你能分享你的数据库结构吗?
  • 请发布您在哪里初始化问题和答案列表的完整代码?
  • 是否有与您的代码相关的内容,您试图从列表中获取某些内容?如果是,请将其添加到您的代码中。您确定该列表已初始化吗?也请回复@AlexMam

标签: java android google-cloud-firestore


【解决方案1】:

您似乎没有定义其中一个变量。您能说出哪一行包含错误吗?

【讨论】:

  • QuestionView.setText(randomSpieler + ", " + Question);看起来 ArrayList 是空的。所以我想我没有得到任何文件,或者我没有以正确的方式将字符串添加到 arrayList
【解决方案2】:

你是如何初始化你的 ArrayList 的?我更熟悉 Kotlin,所以在我的代码中我会写:

var questionList : ArrayList<String> = arrayListOf()

这看起来是来自您的代码而不是来自 Firestore 的错误...否则您会在错误中看到与 Firestore 相关的内容。

【讨论】:

  • 所以我不太了解 Kotlin ...但我使用了 'ArrayList questions;'因此,我只是在 onCreate 方法之前创建了数组列表,然后在调用我的 get_questions() 函数之后,它应该将字符串添加到 arrayList。但好像没有
【解决方案3】:

循环文档时缺少 .getResult()。

试试下面的代码:

public void get_questions(){
    ArrayList<String> answers = new ArrayList<String>();
    ArrayList<String> questions = new ArrayList<String>();

    colref_QUESTIONS.get()
    .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
        @Override
        public void onSuccess(QuerySnapshot queryDocumentSnapshots) {

            for(QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots.getResult()){
                String question = documentSnapshot.getString("question");
                String answer = documentSnapshot.getString("answer");
                questions.add(question);
                answers.add(answer);
                nrofquestions++;
            }
        }  
    });

}

【讨论】:

    猜你喜欢
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 2016-06-23
    相关资源
    最近更新 更多