簡體   English   中英

Android Kotlin 獲取選定微調項的值

[英]Android Kotlin Get Value of Selected Spinner Item

我正在使用AndroidStudio 4.1.1kotlin

我在嘗試獲取微調器視圖/項目中選定項目的值時遇到問題。 我的第一次嘗試,許多線程都說要這樣做,是:

val spinner = findViewById<Spinner>(R.id.wMuscleGroup) as Spinner
val selectedText = spinner.getSelectedItem().toString()

這對我不起作用。 selectedTextToastprintln中不顯示任何內容

我也試過這個,我也發現了很多線程:

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()返回nullnull.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM