4択クイズアプリ

Android Studio 4択クイズアプリ開発講座 第3回「クイズを準備する」

 

この記事は Android Studio 3.x / 4.0.1 に対応しています。
Android Studio 4.1 以降のバージョンをお使いの方はこちらをお読み下さい。

 
 

前回は XML ファイルにテキストビューとボタンを置いてクイズ画面を作成しました。

今回はクイズを出題するために必要な配列を MainActivity.java に準備していきます。

では MainActivity.java を開いて始めていきましょう!
 

動画

【Android Studio】4択クイズアプリ開発講座 #3 クイズを準備する

 
 

解説

カウントラベル

まずは3行目を追加します。

 

これは、前回 activity_main.xml で作成したテキストビューを使うための準備です。
 

画像のように TextView の部分が赤くなり、青いメッセージが出ているかと思います。(メッセージが出ていない場合はそのまま進めてください。)


 

これは「android.widget.TextView をインポートしてください」という警告です。
 

青いメッセージが出ている状態でaltreturnを同時に押してください。
 
警告が消えましたか?
 

コードを見てみると、import android.widget.TextView; が追加されています。


 

このあとに書いていく Button・String・ArrayList でも同じ警告が出た場合はaltreturnを同時に押して、必要な import を行なってください。

メモ

「alt + return」を押さずに
import android.widget.TextView;を直接書くこともできます。

 
 

TextViewとButton

4~8行目を追加します。

 

countLabel と同じく、activity_main.xml に用意したテキストビューとボタンを使うための準備です。
 

同じ要素の場合は、以下のようにまとめて書くこともできます。

 
 
 

クイズの実装には

  • onCreate
  • showNextQuiz
  • checkAnswer

の3つのメソッドを使っていきます。

どのメソッド内からでも questionLabel と answerBtn を使うことができるように

@Override
protected void onCreate(Bundle savedInstanceState) {

よりも上の部分に書いていきます。

一つのメソッド内でしか使わない場合は、そのメソッド内に書くこともできます。
 
 

正解カウントなど

5~7行目を追加します。

 

rightAnswer

正解を入れるために使います。
 

rightAnswerCount

正解数をカウントするために使います。
 

quizCount

何問目を出題しているのかをカウントするために使います。
 
 

問題データを用意

4~18行目を追加します。

Warning が出ている箇所があると思いますが、最後に修正するのでそのままにしておいて下さい。

4行目

クイズのデータを管理するための配列を用意します。
 

6行目~

クイズデータを多次元配列で作成します。
 

ArrayList と多次元配列についてはこのあと説明します。

 
 

ラベルとボタンを取得

7~12行目を追加します。

 

前回 activity_main.xml を作成した時に、テキストビューとボタンに id を設定しました。


 

findViewById は「id からビューを見つける」という意味です。

findViewById を使って要素を取得することで、MainActivity.java から TextView のテキストや Button の文字を書き換えられるようになります。
 
 

クイズ配列を用意

次に、クイズデータをもとにクイズを出題するための配列を用意していきます。

5~20行目を追加してください。

Warning が出ている箇所があると思いますが、最後に修正するのでそのままにしておいて下さい。

ここで簡単に

  1. 基本的な配列
  2. 多次元配列
  3. ArrayList

の違いを紹介します。
 

型は String(文字列)を例に紹介していますが、Integer(数値)など他の型でも使い方は同じです。

① 基本的な配列

String[] colors = {"赤", "青", "緑"};

colors[0] → 赤
colors[1] → 青
colors[2] → 緑

で取り出すことができます。
 

② 多次元配列

String[][] colors = {
 {"赤", "ピンク", "朱"},
 {"青", "水色", "紺"},
 {"緑", "黄緑", "深緑"}
};

 
colors[0][0] → 赤
colors[1][1] → 水色
colors[2][2] → 深緑

で取り出すことができます。
 

③ ArrayList

基本的な配列と同じですが、配列の大きさを決めなくて良いのが ArrayList です。
 

例えば5個の要素を持つ配列の場合、基本的な配列では

String[] str = new String[5] ;

または

String[] str = {"あ", "い", "う", "え", "お"};

と書いて、あらかじめ要素数を決めておく必要があります。
 

一方 ArrayList の場合は、要素の数を決めておく必要はありません。

ArrayList<String> tmpArray = new ArrayList<>();

まず10個の要素を格納できるように作成され、その後10個を超えると自動的に拡張してくれます。
 

クイズ用に配列を使う場合、問題を追加することもありますし、クイズのレベルによって問題数が変わるかもしれません。そのたびに配列の大きさを変更するのは面倒ですし、問題数が多くなったら数えるのも大変です。

このように、配列の大きさがどのくらい必要か分からない時に使えるのが ArrayList です。
 

このクイズでは ArrayList を少し応用して ArrayList を多次元配列の形で作成します。
 

さきほど、以下のように quizArray を用意しました。

ArrayList<ArrayList<String>> quizArray = new ArrayList<>();

通常、型には String や Integer を使用しますが、今回は ArrayList の多次元配列バージョンです。

ArrayList の中に ArrayList を入れていくので、型はArrayList<String>としています。
 
 

コードの補足説明

今回書いたコードでは

  1. for ループを使って quizData からクイズを1問づつ取り出す
  2. tmpArray に問題・正解・選択肢を追加する
  3. quizArray に tmpArray を追加(ArrayList の中に ArrayList を入れる)

ということをしています。
 

なぜ多次元配列(quizData)から ArrayList にわざわざ書きなおすのかと言うと、クイズには欠かせないシャッフル機能を簡単に実装するためです。また、この講座の完全版では SQLite データベースを使ってのクイズを管理していきます。その時に ArrayList で用意しておく方が便利なので、このような書き方をしています。
 

tmpArrayとは?

tmpArray の tmp は「temporary」の略で「一時的」という意味です。temp と書くこともあります。
一時的にしか使わない変数名によく使われるので、覚えておくと便利な書き方です。

 

ここまでのサンプルコード

今回書いたコードのまとめです。

Warning が出ている箇所があると思いますが、最後に修正するのでそのままにしておいて下さい。

 

次に行うこと

これでクイズを出題する準備ができました。
次回は、今回作成したクイズ配列からクイズを画面に表示していきましょう

第4回「クイズを表示する」に進む
 
 

クイズアプリ開発講座の完全版について


 

もっとアプリ開発をしてみたい!自分のアプリをリリースしたい!という方のために、この講座の完全版をご用意しました。
 

完全版では

  • SQLite Databaseを使ってのクイズ管理
  • クイズカテゴリの選択
  • 正解・不正解の効果音
  • AdMob バナー・インタースティシャル広告
  • Image Asset Studio(アイコン作成ツール)の使い方

などを実装していきます。
 

これらのコードはクイズアプリ以外にも利用できるコードばかりなので、今後アプリを開発していく時に必ず役立つと思います。
 
 

さらに3つの特典

  1. Google Play Games リーダーボード・実績の実装方法
  2. 画像を使ったクイズアプリの作り方
  3. 答えを入力するクイズアプリの作り方

もご用意しました。
 

講座ボーナス

 
 

全手順の動画付きで、アプリの開発から公開・アップデートまで出来る講座になっています。

初めてアプリを作るという方もぜひ挑戦してみてください
 

 
 

ABOUT ME
Sara
「わかりやすく・シンプル」をモットーに、スマホアプリ・ウェブアプリの作り方を紹介します。 独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています🙂
guest
4 Comments
古い順
新しい順 人気順
Inline Feedbacks
View all comments
サワガニ太郎
サワガニ太郎
2 months ago

初めまして、サワガニ太郎と申します。
丁寧な解説、本当にわかりやすく参考にさせて頂いてます。

僕は、プログラミングを始めたばかりで独学で過去問アプリを作っています。
一つ質問なのですが、長文の問題を画像データにして呼び出そうと思うのですが、Saraさんがやられている多次元配列への組み込み方がわかりません。
短文の文字列ならそのまま応用できるのですが、、、
講座も受講してない身分なのですが、もし宜しければ教えていただきたいです。
よろしくお願いします。

サワガニ太郎
サワガニ太郎
2 months ago

ご返答有り難うございます。
講座の内容だったんですね、うっかりしてました!申し訳ございません。
今は20問程度をTextViewでスクロールさせているのですが、後々長文1,500問程度に問題数を増やしたい時に、画像データの方が便利なのではと思い、質問させていただきました。自分のやり方は間違ってなかったんだと安心しました。
講座は受講したいです、したくてたまりません。
知りたい事が、内容の中に詰まっているので。
近いうちにお願いするかもしれません、その時はよろしくお願いします。

4
0
この記事にコメントするx