ホーム
2022.9.22

kotlin スピナー(リストボックス)を使う

スピナーアイテムはarrayを作成して使用する、もしくはresouceファイル(strings.xml)にstring-arrayを作成して使用します。
スピナーで選択されたらテキストビューに内容を表示しています。

MainActivity.kt

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.
}
}
  1. スピナー選択時の処理をMainActivity.ktで行うためにAdapterView.OnItemSelectedListenerを継承します。
  2. スピナー選択時の処理を書きます。
    parentでスピナーを識別し、スピナーごとに処理する内容を書いています。

* 公式はこちらです。

strings.xml

<resources>
<string name="app_name">SampleSpinner</string>

<string-array name="my_array">
<item></item>
<item></item>
<item></item>
</string-array>
</resources>
ホーム