4択クイズアプリ

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

ここまでの記事はこちら
 

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

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

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


 

動画

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

 
 

カウントラベル

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

 

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

画像のようにTextViewの部分が赤くなり、青いメッセージが出ているかと思います。


 

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

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

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

 

メモ

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

 

このあとに書いていくButton・String・ArrayListにも警告が出るかと思います。
その場合も同じように「alt + return」を押して警告を消してください。
 
 

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行目を追加します。
 

 

4行目

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

6行目~

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

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

ラベルとボタンを取得

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

 

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


 

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

これをすることで、MainActivity.javaからテキストビューやボタンの文字を書き換えられるようになります。
 
 

クイズ配列を用意

クイズデータからクイズを出題するための配列を用意していきます。

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

 

ここで簡単に

  • 基本的な配列
  • 多次元配列
  • 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] ;

 

ArrayListの場合は要素の数を設定する必要がありません。

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

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

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

 
このクイズでは、ArrayListを多次元配列の形で作成します。
 
「4. 問題データを用意」の部分で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を入れる)

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

なぜ多次元配列からArrayListにわざわざ書きなおすのかと言うと、クイズには欠かせないシャッフル機能を簡単に実装するためです。また、SQLiteを使ってのクイズ管理も紹介していく予定です。その時にArrayListで用意しておく方が便利なので、このような書き方をしています。
 

tmpArrayとは

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

 

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

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

 
 

次に行うこと

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

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

ABOUT ME
Sara
Sara
「わかりやすく・シンプル」をモットーに、携帯アプリ・ウェブアプリの作り方を紹介します。 独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています🙂
独学は難しそうと感じたら

 
独学でプログラミングを勉強するのは難しそう、効率的にプログラミングを学びたいという方はオンラインスクールがオススメです。

オンラインスクールを選ぶときのポイント

  • 無料体験があること
  • 個別サポートがあること

自分にあったスタイルを見つけるために、無料体験のご利用をオススメします。(無料体験後に自分には合わないなと感じたらハッキリ断ってしまって問題ありません。)
 
個別サポートもプログラミング学習に挫折しないために重要なポイントです。エラーや困った時にすぐに個別対応をしてくれるスクールを利用して下さい。

ここでは3つのオンラインスクールを紹介します。
全て無料体験がありますので、ぜひ自分に合ったスクールを見つけてみて下さい????
 

1. TechAcademy(テックアカデミー)

オンライン完結で勉強できるスクールで、コースがとても充実しています。チャットで質問すればすぐに回答を得られるのが一番のおすすめポイントです。
オリジナルのサービスやアプリの開発もサポートしてくれるので、開発したいものが決まっている人にもオススメです。

無料体験はこちら

2. CodeCamp(コードキャンプ)

一対一で受講できる個別指導のプログラミングスクールです。
Webデザイン・Webサービス開発・アプリ開発などを幅広く学習することができます。
マンツーマンなので自分のペースで学習できて、質問もその都度できるのがメリットです。

無料体験レッスンはこちら

3. Treehouse

英語でも良い、英語とプログラミングを同時に勉強したいという方は Treehouse がオススメです。月25ドルで始めることができて、たくさんのプログラミング言語を学ぶことができます。
個別サポートはありませんが、掲示板が充実しています。ほとんどの場合、質問してから30分程度で回答を得ることができます。

7日間の無料体験はこちら

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA