Spinnerはドロップダウンリストを作成するときに使用します。さらに、リストの選択を検知して処理を行う場合はonItemSelectedListenerの実装が必要となりますので、実装方法を説明しています。
Spinnerを利用したドロップダウンリストの作成方法は、↓こちらの記事で説明しています。Spinnerの基本的な使い方をご存じの場合は、本記事のみの閲覧で構いません。
実装例
レイアウト
activity_main.xml
メインアクティビティのレイアウトです。
中央にSpinner、その下に選択項目を表示するTextViewを配置しています。

実装方法
MainActivity.kt
処理の流れは、”ArrayAdapterにレイアウトをセット→選択項目を追加→SpinnerコンポーネントにAdapterをセット”の流れです。
※リストのレイアウトは、標準で用意されている”simple_spinner_〇〇”を使用しています。
onItemSelectedListenerを設定すれば、リストの変更を検知して処理を行えます。
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    val adapter: ArrayAdapter<String> = ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    adapter.add("項目1")
    adapter.add("項目2")
    adapter.add("項目3")
    val spinner: Spinner = findViewById(R.id.spinner)
    spinner.adapter = adapter
    spinner.onItemSelectedListener = CustomItemSelectedListener(this)
}
onItemSelectedListenerに設定するListenerは、AdapterView.OnItemSelectedListenerを継承します。また、選択時の処理はonItemSelectedをoverrideして実装します。
引数”parent”がSpinnerコンポーネントのことですので、parent.selectedItemとすれば選択中の値が取得できます。
class CustomItemSelectedListener(private val mainActivity: MainActivity) :
        AdapterView.OnItemSelectedListener {
    override fun onItemSelected(parent: AdapterView<*>, view: View?, pos: Int, id: Long) {
        val textView: TextView = mainActivity.findViewById(R.id.textView)
        textView.text = parent.selectedItem.toString()
    }
    override fun onNothingSelected(parent: AdapterView<*>?) {
            
    }
}
実行結果
アプリ起動時
初期値はリスト内の一番上が選択されますので、テキストにも表示されています。

別の項目を選択した時
リストの選択を変更すると、テキストの表示も変わっていることが分かります。

まとめ
SpinnerのonItemSelectedListenerを実装して、リストの選択を検知する方法を説明しました。
Spinnerの変更イベントは、onItemSelectedListenerに設定します。また、変更時の処理はAdapterView.OnItemSelectedListenerを継承し、onItemSelectedをoverrideすれば実装可能です。


