問題と選択肢を表示する

はじめに

前回はクイズを管理する配列を作成しました。

今回は、その配列からクイズを取り出してクイズ画面に表示してみましょう。

問題と選択肢を表示する

1. 問題と選択肢のセット

まずはクイズ出題用のメソッドを作成します。

5〜23行目を追加します。

 

7行目

countLabel.setText(getString(R.string.count_label, quizCount));

クイズ画面を作成したときに strings.xml に用意した文字列

<string name="count_label">Q%d</string>

の %d 部分に値をセットしています。

1つ目の引数には strings.xml に定義した文字列を R.string.名前 と書いて、2つ目の引数には %d 部分に入れる数値を指定します。

 

10行目

ArrayList<String> quiz = quizArray.get(0);

quizArrayから0番目のクイズを取り出しています。

取り出したクイズは

{"都道府県名", "正解", "選択肢1", "選択肢2", "選択肢3"}

の順番で要素が入っています。

questionLabel には都道府県名を表示するので quiz.get(0) で quiz 配列から取り出します。

questionLabel.setText(quiz.get(0));

rightAnswer には正解を入れておくので quiz.get(1) で quiz 配列から取り出します。

rightAnswer = quiz.get(1);

 

 

2. showNextQuiz メソッドを呼び出す

アプリを起動したらすぐにクイズが出題されるように、onCreate メソッド内で showNextQuiz メソッドを呼び出します。

5行目を追加します。

 

3. アプリを実行

アプリをエミュレータで実行してみましょう。

quizArray の最初の要素である「北海道」の問題と選択肢が表示されたでしょうか?

image1

 

 

4. 出題順をシャッフル

Collections クラスには、ArrayList の要素をシャッフルできる shuffle メソッドが用意されています。

たった1行書くだけで出題順をシャッフルすることができます。

5行目を追加します。

 

5. 選択肢をシャッフル

次にボタンに表示する選択肢をシャッフルします。

quizArray は「ArrayList の中に ArrayList を入れた2次元 ArrayList」にしたので、取り出した quiz も ArrayList 型になっています。

同じように shuffle メソッドを使うことができますが、今回は都道府県を取り出してからシャッフルします。

showNextQuiz メソッドに15・18・27行目を追加、21〜24行目は添字を変更します。

 

15行目

quiz.remove(0);

都道府県名はボタンに表示する選択肢ではないので削除しておきます。

 

18行目

Collections.shuffle(quiz);

都道府県名は削除したので、この時点で quiz リストに残っているのは正解と3つの選択肢です。

これら4つの順番を shuffle メソッドを使ってシャッフルします。

シャッフルしてから解答ボタンにセットすることで、毎回違う順番で選択肢を表示できるようになります。

 

27行目

quizArray.remove(0);

同じクイズが出題されないように quizArray から問題を削除しておきます。

 

 

6. アプリを実行

クイズがランダムに表示されるかエミュレータで確認してみましょう。

ランダムに出題されるかを確認するために、一度アプリを終了して再度開いてみてください。

問題文が変わって、解答ボタンの順番もシャッフルされているでしょうか?

image2

 

次に行うこと

次回はクイズアプリで一番重要な機能「正解・不正解の判定」を実装していきます。

 

ここまでのコード

 

 

完了して次のステップへ  
コメント

0 コメント