4択クイズアプリ(Kotlin)

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

Sara

Android Studio Ladybug | 2024.2.1 に対応しました(2024年11月)

ここまでの記事はこちら
Java バージョンはこちら

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

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

クイズを準備する

1. ViewBinding の設定

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

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

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

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

Step1

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

12〜14行目のコードを追加します。

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

Step2

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

以上で 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. 関数の用意

4〜7・11〜20行目を追加します。

ボタンをタップしたらcheckAnswer関数が呼ばれるように4〜7行目でクリックリスナーをセットしています。

次に行うこと

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

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

ここまでのコード

Q
MainActivity.kt
package com.example.quizapp

import android.os.Bundle
import android.view.View
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.example.quizapp.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding
    private var rightAnswer: String? = null
    private var rightAnswerCount = 0
    private var quizCount = 1

    private val quizData = mutableListOf(
        mutableListOf("北海道", "札幌市", "長崎市", "福島市", "前橋市"),
        mutableListOf("青森県", "青森市", "広島市", "甲府市", "岡山市"),
        mutableListOf("岩手県", "盛岡市", "大分市", "秋田市", "福岡市"),
        mutableListOf("宮城県", "仙台市", "水戸市", "岐阜市", "福井市"),
        mutableListOf("秋田県", "秋田市", "横浜市", "鳥取市", "仙台市"),
        mutableListOf("山形県", "山形市", "青森市", "山口市", "奈良市"),
        mutableListOf("福島県", "福島市", "盛岡市", "新宿区", "京都市"),
        mutableListOf("茨城県", "水戸市", "金沢市", "名古屋市", "奈良市"),
        mutableListOf("栃木県", "宇都宮市", "札幌市", "岡山市", "奈良市"),
        mutableListOf("群馬県", "前橋市", "福岡市", "松江市", "福井市")
    )

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }

        binding.answerBtn1.setOnClickListener { checkAnswer(it) }
        binding.answerBtn2.setOnClickListener { checkAnswer(it) }
        binding.answerBtn3.setOnClickListener { checkAnswer(it) }
        binding.answerBtn4.setOnClickListener { checkAnswer(it) }
    }

    // クイズを出題する
    private fun showNextQuiz() {
    }

    // 解答ボタンが押されたら呼ばれる
    private fun checkAnswer(view: View) {
    }

    // 出題数をチェックする
    private fun checkQuizCount() {
    }
}
Subscribe
Notify of
0 Comments
古い順
新しい順 人気順
Inline Feedbacks
View all comments
ABOUT ME
Sara
Sara
運営者
書籍やオンライン講座でプログラミングを勉強してフリーランスのプログラマーになりました。
このサイトでは「わかりやすく・シンプル」をモットーに、プログラミングの基礎からアプリ開発まで紹介します。
独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています。
主な使用言語:Java / Kotlin / PHP
>> 詳しいプロフィール
>> お問い合わせ
>> 書籍を出版しました!
本格的に学びたい方へ

Code for Fun プログラミング講座

POINT 01

動くコード

プログラミングの文法を学んでも、そこからどのようにアプリ開発ができるのかイメージが湧きにくいものです。

Code for Fun のプログラミング講座では、ゲームやカレンダーなどアプリとして機能するものを作りながらプログラミングを学ぶことができます。

POINT 02

自分のペースで

オンライン講座なので、ご自身のペースで学習を進めて頂けます。

受講期限もないので、いつでも前のレッスンに戻ることができるので安心です。

お申し込みしたその日からすぐに始めることができます。

POINT 03

個別サポート

プログラミング学習では、エラーが起きることはよくあります。そんな時はお気軽にお問い合わせください!

コメント欄またはメールによるサポートを回数無制限でご利用頂けます。(*講座に関連するご質問のみ対応)

今すぐ無料でお試し

0
この記事にコメントするx
記事URLをコピーしました