2012-04-09 4 views
0

これまでのところ、特定のtextviewsに行の内容(4列)を表示することができました。しかし、私はそれらをランダムに表示したい。 私はこのデータベースからの列のランダムセット

String answer1 = cur.getString(cur.getColumnIndex("ANSWER1")); 

を使用して上のコンテンツの変更をクリックしますが、常に列ANSWER1上のデータが最初のTextViewに表示されます。 4つのテキストビューに4つの列をランダムに表示するにはどうすればよいですか?たとえば、列1からテキスト3、列2からテキスト1など。私は、テキストビュー1で毎回異なるデータが必要です。
----編集----
私は列の番号を識別する列をもう1つ持っています正解が列 "回答3"にある場合、 "CorrAnswer"列のデータは3です。上記のtextviewsをボタンに変更します。各ボタンは整数を送信します。ボタンのテキストがシャッフルされているときに、正解を確認するにはどうしたらいいですか?

+0

あなたが取得したいという事実をランダムな列は、スキーマが正規化されていないことを強く示唆します。 https://en.wikipedia.org/wiki/Database_normalization –

+0

もっと具体的にしましょう。私は、textviews内の事前定義された順序ではなく、各列のデータをディスパッチしたい。正規化とは関係ありません。 – dothedos

答えて

1

回答をすべてArrayListに追加し、ランダムを使用してランダムな回答を削除します。以下のJava(コンソール)のコードこれを行う方法を示します。

ArrayList<String> lstAnswers = new ArrayList<String>(); 
    lstAnswers.add("Answer 1"); 
    lstAnswers.add("Answer 2"); 
    lstAnswers.add("Answer 3"); 
    lstAnswers.add("Answer 4"); 

    Random random = new Random(); 


    while (lstAnswers.size() > 0) { 
     int index = random.nextInt(lstAnswers.size()); 
     String randomAnswer = lstAnswers.remove(index); 
     System.out.println(randomAnswer); 
    } 

あなたの編集に要求されるように、以下のテキストビューにテキストを割り当てます:

ArrayList<String> lstAnswers = new ArrayList<String>(); 
    lstAnswers.add("Answer 1"); 
    lstAnswers.add("Answer 2"); 
    lstAnswers.add("Answer 3"); 
    lstAnswers.add("Answer 4"); 

    Random random = new Random(); 

    int[] textViews = new int[] { R.id.txt1, R.id.txt2, R.id.txt3, R.id.txt4 }; 
    int textViewIndex = 0; 

    while (lstAnswers.size() > 0) { 
     int index = random.nextInt(lstAnswers.size()); 
     String randomAnswer = lstAnswers.remove(index); 

     ((TextView)findViewByid(textViews[textViewIndex])).setText(randomAnswer); 

     ++textViewIndex; 
    } 
+0

私は答えを削除したくないですが、あなたの答えがうまくいくかもしれません。もし私がarraylistの特定のインデックスに刺すようにしたいと私はそれを行うことができるtextviewにそれを表示するには? – dothedos

+0

削除は一時的なarraylistから文字列を削除するだけです。データベースから削除されません。 –

+0

文字列をテキストビューに追加するには、whileループ内でtextView.set text(ランダム回答)を呼び出します。ただし、繰り返しごとに異なるテキストビューにする必要がある場合は、まだtextviewsが設定されていない参照を維持する必要があります。 –

関連する問題