クイズと選択肢を表示する

目次

はじめに

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

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

MainActivity.java ファイルを開いてはじめていきましょう!


動画

Android Studio バージョンについて

動画では Android Studio 3.1.4 を使用していますが 3.6 でも動作確認済みです。

 

 

1. クイズ出題用のメソッド

6~37行目を追加してください。

 

必要なImport

RandomとCollectionsに警告が出た場合は、 前回までと同じように「alt」「return」を同時に押して警告を消してください。

コードを直接書いて警告を消すこともできます。

import java.util.Collections;
import java.util.Random;

 

ランダムな数字

11~12行目では、quizArrayからランダムにクイズを取り出すために、 ランダムな数字を生成しています。

nextInt()を使うと「0から指定した値未満の整数」を返してくれます。

 

例えば

random.nextInt(5)

とすると、0から5未満の整数、つまり0・1・2・3・4のどれかを返します。

 

ここでは quizArray からランダムにクイズを取り出したいので、 0から配列の要素数マイナス1の範囲でランダムな数字を生成しています。

 

ArrayList<String> quiz の中身

ArrayList<String> quiz には、この順番で要素が入っています。
{"都道府県名", "正解", "選択肢1", "選択肢2", "選択肢3"}

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

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

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

rightAnswer = quiz.get(1);

 

選択肢のシャッフル

27行目 Collections.shuffle(quiz);

都道府県名は24行目で削除しているので、quiz 配列に残っているのは正解と3つの選択肢です。

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

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

 

クイズを削除

36行目 quizArray.remove(randomNum);

同じ問題が出題されないように、quizArray から忘れずに削除しておきましょう。

 

 

2. showNextQuiz を呼び出す

8行目を追加します。

 

アプリを起動して MainActivity が呼び出されたときにクイズが出題されるように showNextQuiz() を呼び出します。

 

3. エミュレーターで確認する

ここまでのコードが上手く動くかエミュレーターで確認してみましょう!


クイズが表示されましたか?

 

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

 

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

もし上手く表示されない場合は、サンプルコードと比較してみてください。

 

 

まとめ

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


ここまでのコード

コメント

0 コメント