スピナーアイテムはarrayを作成して使用する、もしくはresouceファイル(strings.xml)にstring-arrayを作成して使用します。
スピナーで選択されたらテキストビューに内容を表示しています。
package com.example.samplespinner
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.AdapterView
import android.widget.ArrayAdapter
import com.example.samplespinner.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity(), AdapterView.OnItemSelectedListener { // *1
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
// case of make array.
val myArray = 0..9
val adapter = ArrayAdapter(
this,
android.R.layout.simple_spinner_item,
myArray.toList()
)
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
binding.spnSample.adapter = adapter
binding.spnSample.onItemSelectedListener = this
// case of get from resource.
val adapter2 = ArrayAdapter.createFromResource(
this,
R.array.my_array,
android.R.layout.simple_spinner_item
)
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
binding.spnSample2.adapter = adapter2
binding.spnSample2.onItemSelectedListener = this
}
override fun onItemSelected(parent: AdapterView<*>?, view: View?, pos: Int, id: Long) { // *2
when (parent) {
binding.spnSample -> {
var str = "spinner1 clicked."
str += "\npos:$pos"
str += "\n" + parent.selectedItem.toString()
binding.txvSample.text = str
}
binding.spnSample2 -> {
var str = "spinner2 clicked."
str += "\npos:$pos"
str += "\n" + parent.selectedItem.toString()
binding.txvSample.text = str
}
}
}
override fun onNothingSelected(p0: AdapterView<*>?) {
// do nothing.
}
}
<resources>
<string name="app_name">SampleSpinner</string>
<string-array name="my_array">
<item>月</item>
<item>火</item>
<item>水</item>
</string-array>
</resources>