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) {
}
});
を追加し、私は、データベース参照にリスナーを追加しましたし、foreachループ内では、私はすべての反復処理しようとしていますArrayListの値を取得したいときに参照しようとしているArrayListに値を設定します。Firebase:あなたが見ることができるようにaddListenerForSingleValueEventsとのArrayListを移入しようとすると、それだけで一人の子供
問題は、このコードは、ArrayList内に1つの要素を何度も繰り返し、または一度だけ入れてしまいますが、指定されたデータベース位置からの最初のエントリだけが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
Questionクラスとfirebaseデータ構造を投稿してください。 – RamithDR