2017-02-19 12 views
0
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; 
    } 
} 
+0

ArrayListを 'onDataChange'メソッドから(好ましくはグローバル変数として)宣言し、報告し直してください。 – RamithDR

+0

クラス宣言の直後に 'onCreate'メソッドの前に入れました。それでもなお同じ問題が続く。 – user1938007

+0

Questionクラスとfirebaseデータ構造を投稿してください。 – RamithDR

答えて

0

問題は、私はint型にMath.randomを使用することができなかったということでしたので、私は、二重使用する必要がありましたMath.randomにintを常に0を掛けて乗算することで、ランダムな値をインデックスとして使用して配列の最初のインデックスを常に呼び出すことになります。

関連する問題