2022 May 14.
端末
概要
- ドロップダウン表示する文字列の配列を作る
- Spinnerを置くアクティビティにAdapterView.OnItemSelectedListenerインターフェースを組み込み、onItemSelected()とonNothingSelected()を実装する
onItemSelected()
Spinner#selectedItemPosition()でドロップダウンリストの位置番号(インデックス番号)を取得する
onNothingSelected()
利用しないので、何も行わない実装とする
- ArrayAdapterにドロップダウン表示する文字列の配列を組み込む
- SpinnerにArrayAdapterをセットする
サンプルコード
app/res/values/arrays.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <array name="myItems"> <item>@string/item1</item> <item>@string/item2</item> <item>@string/item3</item> </array> </resources>
MainActivity.kt
package net.sytes.rokkosan.myspinnerselectbyid /* 2022 May 14. Ryuichi Hashimoto. referrence http://pg-box.jp/blog/20140328/pulldown#getSelectedItemId https://developer.android.com/guide/topics/ui/controls/spinner?hl=ja */ import android.os.Bundle import android.view.View import android.widget.AdapterView import android.widget.ArrayAdapter import android.widget.Spinner import android.widget.TextView import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity(), AdapterView.OnItemSelectedListener { val spinner1: Spinner by lazy { findViewById<Spinner>(R.id.spinner1) } val textViewInfo1: TextView by lazy { findViewById<TextView>(R.id.textVewInfo1) } override fun onItemSelected(parent: AdapterView<*>, view: View?, pos: Int, id: Long) { when (spinner1.selectedItemPosition) { 0 -> { textViewInfo1.text = getString(R.string.item1) } 1 -> { textViewInfo1.text = getString(R.string.item2) } 2 -> { textViewInfo1.text = getString(R.string.item3) } else -> { textViewInfo1.text = getString(R.string.error) } } } override fun onNothingSelected(parent: AdapterView<*>) { // Another interface callback } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setAdapterSpinner() spinner1.onItemSelectedListener = this } private fun setAdapterSpinner() { val myAdapter = ArrayAdapter.createFromResource( this, R.array.myItems, android.R.layout.simple_spinner_item) // simple_spinner_item // プラットフォームによってデフォルトで提供されているスピナーの外観レイアウト myAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) // simple_spinner_dropdown_item // プラットフォームで定義された標準のドロップダウンレイアウト spinner1.setAdapter(myAdapter) } }
strings.xml
<resources> <string name="app_name">MySpinnerSelectById</string> <string name="item1">アイテム1</string> <string name="item2">アイテム2</string> <string name="item3">アイテム3</string> <string name="error">エラー</string> </resources>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Spinner android:id="@+id/spinner1" android:layout_width="match_parent" app:layout_constraintBottom_toTopOf="@id/textVewInfo1" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/textVewInfo1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/spinner1" /> </androidx.constraintlayout.widget.ConstraintLayout>