【Kotlin/Android Studio】Spinnerの実装方法!プルダウンメニュー

この記事からわかること

  • Android Studio/KotlinSpinnerを使った実装方法
  • プルダウンメニューを実装するには?
  • ArrayAdapter使い方

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

参考文献:公式リファレンス:Spinner

環境

Spinnerでの実装方法

実装の流れ

レイアウトの準備

レイアウトにはSpinnerタグを使用します。

<Spinner
  android:id="@+id/spinner"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  app:layout_constraintBottom_toTopOf="parent"
  app:layout_constraintEnd_toEndOf="parent"
  app:layout_constraintStart_toStartOf="parent"
  app:layout_constraintTop_toTopOf="parent" />

リソースを定義する

プルダウンメニューの項目を定義します。これはいろいろな方法がありますが今回はenum(列挙型)を使用して定義しておきます。

enum class Lang {
    KOTLIN,
    SWIFT,
    DART
}

列挙型で定義したクラスではvaluesメソッドで列挙子をまとめた配列が受け取れます。

Lang.values().forEach {
    print(it.name)
} // KOTLINSWIFTDART

ArrayAdapterの作成

ここからは「MainActivity.kt」の中に記述していきます。spinnerAdapterListenerプロパティを定義してAdapterView.OnItemSelectedListenerを作成していきます。ここに選択された時に実行したい処理と選択されなった時に実行したい処理を記述します。

class MainActivity : AppCompatActivity(){

    private val spinnerAdapterListener = object : AdapterView.OnItemSelectedListener {
        override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
            // 選択された時に実行したい処理
        }

        override fun onNothingSelected(parent: AdapterView<*>?) {
            // 選択されなかった時に実行したい処理
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

ArrayAdapterの作成

続いてArrayAdapterクラスのインスタンスを生成します。引数にはContextスピナーの1アイテムのレイアウトファイルを渡します。android.R.layout.simple_spinner_itemに関してはシステムが自動で生成してくれるので準備する必要はありません。

val spinnerAdapter = ArrayAdapter<String>(this, android.R.layout.simple_spinner_item)
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
Lang.values().forEach {
    spinnerAdapter.add(it.name)
}

次にsetDropDownViewResourceメソッドを呼び出しプルダウンメニューのレイアウトを指定します。android.R.layout.simple_spinner_dropdown_itemシステムが自動で生成してくれます。

続いてArrayAdapterの中にアイテムを格納していきます。Lang.valuesで配列を取得し中の要素をaddメソッドで追加しています。

最後にAdapterspinnerAdapterListenerをセットして完了です。

spinner.adapter = spinnerAdapter
spinner.onItemSelectedListener = spinnerAdapterListener
Kotlin/Android Studio】Spinnerの実装方法!プルダウンメニュー

全体のコード

class MainActivity : AppCompatActivity(){

    private val spinnerAdapterListener = object : AdapterView.OnItemSelectedListener {
        override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
            // 選択された時に実行したい処理
        }

        override fun onNothingSelected(parent: AdapterView<*>?) {
            // 選択されなかった時に実行したい処理
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val spinner:Spinner = findViewById(R.id.spinner)

        val spinnerAdapter = ArrayAdapter<String>(this, android.R.layout.simple_spinner_item)
        spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        Lang.values().forEach {
            spinnerAdapter.add(it.name)
        }
        spinner.adapter = spinnerAdapter
        spinner.onItemSelectedListener = spinnerAdapterListener
    }
}

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index