英単語帳アプリを作っており、その中の意味確認テストの機能に取り組んでいる段階です。
データベースより1つの単語とそれの意味を持ってきて、それとはまた別で3つランダムに取り出してきたほかの単語の意味を用意し、合計4つの意味をlistに入れてシャッフルさせラジオボタンに表示します。
この処理をするために単語と正しい意味を取り出すSQL文と、意味だけをランダムに3つだけ取り出すSQL文を記述しているのですが、このままだと確率は低いですが正解の意味と同じものがランダムで選ぶ3つに入ってしまう可能性があります。
そこでSQL文に、「正解として取り出したもの以外の中から」という条件を加えたいのですが、どのように記述していいのかで手が止まっている状態です、、、
ラジオボタンに格納するまでのコードは以下の通りです。2つ目のSQL文のところです。
参考になりそうなもの、またアドバイス等ありましたら是非お願いします。
java
1 protected void onCreate(Bundle savedInstanceState) { 2 super.onCreate(savedInstanceState); 3 setContentView(R.layout.activity_mean); 4 5 DataBaseHelper dbhelper = new DataBaseHelper(this); 6 SQLiteDatabase databaseObject = dbhelper.getReadableDatabase(); 7 8 String query = "SELECT * " + "FROM WordData order by random()"; 9 String sql = "SELECT * " + "FROM WordData order by random() limit 3"; /*条件、、*/ 10 Cursor cursor = databaseObject.rawQuery(query, null); 11 Cursor cursor1 = databaseObject.rawQuery(sql, null); 12 cursor.moveToFirst(); 13 14 String word = cursor.getString(0); 15 String mean1 = cursor.getString(3); 16 17 wordView = (TextView) findViewById(R.id.word_view); 18 wordView.setText(word); 19 20 RadioButton rg1 = (RadioButton) findViewById(R.id.RadioButton1); 21 rg1.setText(mean1); 22 23 cursor.close(); 24 25 cursor1.moveToFirst(); 26 String mean2 = cursor1.getString(3); 27 cursor1.moveToNext(); 28 29 String mean3 = cursor1.getString(3); 30 cursor1.moveToNext(); 31 32 String mean4 = cursor1.getString(3); 33 cursor1.moveToNext(); 34 35 cursor1.close(); 36 37 List<String> meaning = new ArrayList<String>(); 38 meaning.add(mean2); 39 meaning.add(mean3); 40 meaning.add(mean4); 41 42 Collections.shuffle(meaning); 43 44 RadioButton rg2 = (RadioButton) findViewById(R.id.RadioButton2); 45 rg2.setText(mean2); 46 RadioButton rg3 = (RadioButton) findViewById(R.id.RadioButton3); 47 rg3.setText(mean3); 48 RadioButton rg4 = (RadioButton) findViewById(R.id.RadioButton4); 49 rg4.setText(mean4);
回答3件
あなたの回答
tips
プレビュー