首页 > 解决方案 > 将 Firestore 中的字符串保存在 Java 的 ArrayList 中

问题描述

我目前正在尝试创建一个提出问题并显示答案的应用程序。我将它们保存为 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++;
                }
            }  
        });
}

标签: javaandroidgoogle-cloud-firestore

解决方案


循环文档时您缺少 .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++;
            }
        }  
    });

}


推荐阅读