DatabaseReference ref = mFirebaseDatabaseReference.child("questions");
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String dQuestion;
ArrayList<Question> alQuestions = new ArrayList<Question>();
for(DataSnapshot questionSnapshot : dataSnapshot.getChildren()){
dQuestion = questionSnapshot.child("question").getValue(String.class);
Question q = new Question(dQuestion);
alQuestions.add(q);
}
randoms[0] = (int) Math.random() * alQuestions.size();
randoms[1] = (int) Math.random() * alQuestions.size();
randoms[2] = (int) Math.random() * alQuestions.size();
randoms[3] = (int) Math.random() * alQuestions.size();
randoms[4] = (int) Math.random() * alQuestions.size();
String q1, q2, q3, q4, q5;
q1 = alQuestions.get(randoms[0]).getQuestion();
q2 = alQuestions.get(randoms[1]).getQuestion();
q3 = alQuestions.get(randoms[2]).getQuestion();
q4 = alQuestions.get(randoms[3]).getQuestion();
q5 = alQuestions.get(randoms[4]).getQuestion();
tvQuestion1.setText(q1);
tvQuestion2.setText(q2);
tvQuestion3.setText(q3);
tvQuestion4.setText(q4);
tvQuestion5.setText(q5);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Как вы можете видеть, я добавил слушатель ссылки базы данных и в пределах цикла Еогеасп, я пытаюсь перебирать все указанных дочерних элементов и заполнить ArrayList, о котором я позже попытаюсь обратиться, когда я хочу получить некоторые из значений из него.Firebase: Попытка заполнить в ArrayList с addListenerForSingleValueEvents, он добавляет только один дочерний
Проблема заключается в том, что этот код, как есть, помещает только один элемент в ArrayList снова или снова или только один раз, но не уверен, но только первая запись из указанного местоположения базы данных попадает в ArrayList и отображается там, где я хочу.
Как я могу получить все дети внутри ArrayList?
EDIT:
Структура базы данных
survey-6d90daddclose
questions
-KdG_f4dckyHRBVLrYj2
date:
"Sat Feb 18 09:18:34 EST 2017"
question:
"Will it work properly this time?"
-KdG_sNbmmIFiJGOWHTz
date:
"Sat Feb 18 09:19:29 EST 2017"
question:
"Will it work properly this time?"
-KdGd1Nl-tifclI_Gd4e
date:
"Sat Feb 18 09:33:16 EST 2017"
question:
"Username: null"
-KdHTJZ2IHvgtWpLQIyQ
date:
"Sat Feb 18 13:26:04 EST 2017"
question:
"Username: null"
-KdLIycLs-Qv5zscKYIV
date:
"Sun Feb 19 07:19:32 EST 2017"
question:
"Q1"
-KdLIzjSr3o-h8ewH5CL
date:
"Sun Feb 19 07:19:36 EST 2017"
question:
"Q2"
-KdLJ1VhcUZQlqU2hoxA
date:
"Sun Feb 19 07:19:48 EST 2017"
question:
"Q3"
-KdLJ3XxTLeOEH83fzzw
date:
"Sun Feb 19 07:19:56 EST 2017"
question:
"Q4"
-KdLJ4ci6p7OLdPl4AS2
date:
"Sun Feb 19 07:20:00 EST 2017"
question:
"Q5"
-KdLJ5Wz5Bk-X_U0cRwQ
date:
"Sun Feb 19 07:20:04 EST 2017"
question:
"Q6"
-KdLJ6jdYaNWnr8_PfEk
date:
"Sun Feb 19 07:20:09 EST 2017"
question:
"Q7"
-KdLJ7i5EzAEr6HLr__-
date:
"Sun Feb 19 07:20:13 EST 2017"
question:
"Q8"
класс Вопрос
public class Question {
private String date;
private String question;
private String username;
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
public Question() {
}
public Question(String date, String question, String username) {
this.date = date;
this.question = question;
this.username = username;
}
public Question(String question) {
this.question = question;
}
public String getDate() {
return date;
}
public String getQuestion() {
return question;
}
public void setDate(String date) {
this.date = date;
}
public void setQuestion(String question) {
this.question = question;
}
}
Объявите свой ArrayList из метода onDataChange (желательно как глобальную переменную) и отчитайтесь. – RamithDR
Я поместил его перед методом 'onCreate', просто назвав объявление класса. Тем не менее эта же проблема сохраняется. – user1938007
Не могли бы вы разместить свой класс вопросов и структуру данных о бомбе. – RamithDR