問題と選択肢を表示する
目次
はじめに
前回はクイズを管理する配列を作成しました。
今回は、その配列からクイズを取り出してクイズ画面に表示してみましょう。
問題と選択肢を表示する
1. 問題と選択肢のセット
まずはクイズ出題用のメソッドを作成します。
5〜23行目を追加します。
7行目
クイズ画面を作成したときに strings.xml に用意した文字列
の %d 部分に値をセットしています。
1つ目の引数には strings.xml に定義した文字列を R.string.名前 と書いて、2つ目の引数には %d 部分に入れる数値を指定します。
10行目
quizArrayから0番目のクイズを取り出しています。
取り出したクイズは
の順番で要素が入っています。
questionLabel には都道府県名を表示するので quiz.get(0) で quiz 配列から取り出します。
rightAnswer には正解を入れておくので quiz.get(1) で quiz 配列から取り出します。
2. showNextQuiz メソッドを呼び出す
アプリを起動したらすぐにクイズが出題されるように、onCreate メソッド内で showNextQuiz メソッドを呼び出します。
5行目を追加します。
4. 出題順をシャッフル
Collections クラスには、ArrayList の要素をシャッフルできる shuffle メソッドが用意されています。
たった1行書くだけで出題順をシャッフルすることができます。
5行目を追加します。
5. 選択肢をシャッフル
次にボタンに表示する選択肢をシャッフルします。
quizArray は「ArrayList の中に ArrayList を入れた2次元 ArrayList」にしたので、取り出した quiz も ArrayList 型になっています。
同じように shuffle メソッドを使うことができますが、今回は都道府県を取り出してからシャッフルします。
showNextQuiz メソッドに15・18・27行目を追加、21〜24行目は添字を変更します。
15行目
都道府県名はボタンに表示する選択肢ではないので削除しておきます。
18行目
都道府県名は削除したので、この時点で quiz リストに残っているのは正解と3つの選択肢です。
これら4つの順番を shuffle メソッドを使ってシャッフルします。
シャッフルしてから解答ボタンにセットすることで、毎回違う順番で選択肢を表示できるようになります。
27行目
同じクイズが出題されないように quizArray から問題を削除しておきます。
6. アプリを実行
クイズがランダムに表示されるかエミュレータで確認してみましょう。
ランダムに出題されるかを確認するために、一度アプリを終了して再度開いてみてください。
問題文が変わって、解答ボタンの順番もシャッフルされているでしょうか?
次に行うこと
次回はクイズアプリで一番重要な機能「正解・不正解の判定」を実装していきます。
ここまでのコード
0 コメント