如何解决Android Kotlin 获取所选 Spinner 项的值
我正在使用 AndroidStudio 4.1.1
和 kotlin
我在尝试获取微调视图/项目中所选项目的值时遇到问题。我的第一次尝试,许多线程都说要这样做,是:
val spinner = findViewById<Spinner>(R.id.wMuscleGroup) as Spinner
val selectedText = spinner.getSelectedItem().toString()
这对我不起作用。 selectedText
在 Toast
或 println
我也试过这个,我也发现了很多线程:
val spinner = findViewById<Spinner>(R.id.wMuscleGroup) as Spinner
if (spinner != null) {
val adapter = ArrayAdapter( this,android.R.layout.simple_spinner_item,muscleGroups )
spinner.adapter = adapter
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>,view: View,position: Int,id: Long) {
val selectedText = muscleGroups[position]
println("Muscle Group selected is $selectedText") // <-- this works
}
override fun onNothingSelected(parent: AdapterView<*>) {
// write code to perform some action
}
}
}
// selectedText is not seen here:
println("Muscle Group selected is $selectedText")
这有效,我可以在我的 println 中看到 selectedString
,在块内的 onItemSelected
函数中。但是,如何在此代码块之外看到此值?我需要在类对象和数据库写入中使用此值。我试过在 selectedString
之外/之上声明 if (spinner != null)
,但这似乎也不起作用。
感谢您的帮助。
解决方法
默认情况下,您的微调器没有选择值。因此调用 spinner.getSelectedItem()
返回 null
并且 null.toString()
返回一个空字符串。
只有当用户首先从 Spinner 中选择了一个选项时,您的代码才会起作用。您可以使用 spinner.setSelection(position)
设置初始值。
如果想在选择外使用选中的值,可以使用全局变量如下:
val spinner = findViewById<Spinner>(R.id.wMuscleGroup) as Spinner
var selectedText = muscleGroups.first() // as default
if (spinner != null) {
val adapter = ArrayAdapter( this,android.R.layout.simple_spinner_item,muscleGroups )
spinner.adapter = adapter
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>,view: View,position: Int,id: Long) {
selectedText = muscleGroups[position]
}
override fun onNothingSelected(parent: AdapterView<*>) {
}
}
}
,
如果你想尝试一些带有 selectedText 的东西,你应该在 onItemSelected 函数中使用它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。