在Java中的ArrrayList中保存Firestore中的字符串



我目前正在尝试创建一个应用程序,该应用程序会询问问题并显示答案。我将这些保存为Firestore上的文档(集合中的每个文档都有一个字符串表示一个问题,另一个字符串用于回答)。我正在尝试读取该集合中的每个文档(使用for循环?),然后将答案保存在一个arrayList中,将问题保存在另一个arrayList中。我只收到一条错误消息,上面写着"尝试在null对象引用上调用虚拟方法"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++;
}
}  
});
}

看起来您还没有定义其中一个变量。你能说出哪一行有错误吗?

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

var questionList : ArrayList<String> = arrayListOf()

这看起来是一个来自代码的错误,而不是来自Firestore。。。否则,您将在错误中看到与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++;
}
}  
});

}

最新更新