[英]Android Kotlin Get Value of Selected Spinner Item
我正在使用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
function 中。 但是,如何讓這個值在這段代碼之外被看到? 我需要在 class object 和數據庫寫入中使用這個值。 我嘗試在if (spinner != null)
外部/上方聲明selectedString
,但這似乎也不起作用。
謝謝你的幫助。
默認情況下,您的 Spinner 沒有選擇值。 因此調用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 function 中使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.