Сохранение строк из Firestore в ArrrayList в Java - PullRequest
1 голос
/ 31 января 2020

Я сейчас пытаюсь создать приложение, которое задает вопрос и показывает ответ. Я сохраняю их как документы в Firestore (каждый документ в коллекции содержит строку для вопроса и еще одну для ответа). Я пытаюсь прочитать каждый документ в этой коллекции (с для l oop?), А затем сохранить ответ в один 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++;
                }
            }  
        });
}

Ответы [ 3 ]

0 голосов
/ 31 января 2020

Как вы инициализируете свой ArrayList? Я более знаком с Kotlin, поэтому в своем коде я бы написал:

var questionList : ArrayList<String> = arrayListOf()

Похоже, это ошибка, исходящая из вашего кода, а не из Firestore ... в противном случае вы увидите что-то связанное с Firestore в ошибке.

0 голосов
/ 03 февраля 2020

Вы пропускаете .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++;
            }
        }  
    });

}

0 голосов
/ 31 января 2020

Похоже, вы не определили одну из переменных. Можете ли вы сказать, какая строка содержит ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...