4択クイズアプリ(Kotlin)

【Android Studio】Kotlinでつくるクイズアプリ講座 第3回「クイズの準備」

Android Studio Chipmunk | 2021.2.1 での動作確認を完了しました。(2022年5月)

この講座の目次はこちら
 

クイズ画面は完成したので、今回はクイズ出題に必要な変数や配列を準備しています。

MainActivity.kt を開いて始めていきましょう!
 
 


 

動画

準備中

 

動画で使用しているクイズデータ


 
 

テキスト

1. ViewBinding の設定

MainActivity.kt では問題文や選択肢を書き換えるコードを書くので、id を使って TextView と Button を取得します。

findViewById メソッドを使うのが一般的で、以下のように書くことができます。


 

これでもコードは動きますが、少し面倒ですし無効な ID や間違った型を指定してしまうリスクもあります。

また Kotlin の大きな特徴として Null(空っぽの状態)を回避するというものがあります。

今回は ViewBinding を使って簡単に TextView や Button にアクセスできるようにしましょう。
 
 

Step1

Android Studio 左側のプロジェクト構造から build.gradle(Module: QuizApp:app) を開きます。


 
 

11~13行目のコードを追加します。

 

画面右上の Sync Now を押します。


 

Step2

MainActivity.kt を開いて5・9行目を追加します。

 

Step3

onCreate 関数内を以下のように書き換えます。

 

完了

以上で ViewBinding を使う準備ができました。
 

今後は

val countLabel : TextView = findViewById(R.id.countLabel)

と書く必要はなく

binding.countLabel

で TextView や Button を操作することができるようになります。

参考: 【Android Studio】View Bindingの使い方(Kotlin編)
 
 
 

2. 変数の用意

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

rightAnswer

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

rightAnswerCount

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

quizCount

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

3. クイズデータの用意

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

 

クイズは List や Array ではなく、要素のシャッフルと削除ができる MutableList を使います。

MutableList の中に MutableList を入れる二次元配列の形にすることで

  • 出題順序のシャッフル
  • 選択肢のシャッフル

も簡単にできるようになります。
 
 
 

4. 関数の用意

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

 

checkAnswer 関数は解答ボタンが押されたときに呼ばれます。

前回 Button 要素の onClick 属性につけた値と関数名を同じにすることにご注意ください。


 
 
 

5. アプリを実行

ここで一度エミュレータでアプリを実行してください。

前回と同じようにクイズ画面が表示されたら成功です。


 
 
 

次に行うこと

クイズを出題するための準備は完了です。

次回はクイズを画面に表示してみましょう!

第4回「問題と選択肢を表示する」に進む
 

ここまでのコード

MainActivity.kt

 
 
 

Android 開発のための Kotlin 入門講座

Kotlin の入門書や入門講座では「文法を学んでもそれをいつどこで使うのか分からない」「アプリ開発との関連が分からない」ということがよくあります。
 

Android 開発のための Kotlin 入門講座では「Kotlin 文法を学ぶ→アプリ開発する」を繰り返して、合計3つのアプリを開発していきます。

  • とにかく Android アプリを開発してみたい!
  • Android 開発に興味があるけれど、何から始めれば良いかわからない
  • プログラミングに挫折したことがある

という方にお勧めの講座になっています。

この講座でプログラマーへの第一歩を踏み出しましょう
 

 
 

ABOUT ME
Sara
「わかりやすく・シンプル」をモットーに、スマホアプリ・ウェブアプリの作り方を紹介します。 独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています🙂
guest
0 Comments
Inline Feedbacks
View all comments
0
この記事にコメントするx