【问题标题】:How to retrieve the String of a selected item in spinner outside of onItemSelected method?如何在 onItemSelected 方法之外的微调器中检索所选项目的字符串?
【发布时间】:2022-11-14 23:51:25
【问题描述】:

我需要在.onItemSelectedListener 之外的微调器中检索选定的字符串。 下拉菜单包含“每周、每月、每年”字符串,我需要检索该选定项字符串,以便在函数外部的条件条件中使用它们。

我只看到有人在 onItemSelected 函数中制作 Toasts,但这并不能解决我的问题。

这是我的代码:

val spinner = binding.tvAutoComplete
val powtarzanie = resources.getStringArray(R.array.powtarzanie)
val arrayAdapter = ArrayAdapter(requireContext(),
                   R.layout.dropdown_powtarzaj_item,
                   powtarzanie)
spinner.setAdapter(arrayAdapter)
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
    override fun onItemSelected(
        parent: AdapterView<*>?,
        view: View?,
        position: Int,
        id: Long
    ) {
       val itemText: String = parent?.getItemAtPosition(position).toString()

    }

    override fun onNothingSelected(parent: AdapterView<*>?) {
        TODO("Not yet implemented")
    }
}

【问题讨论】:

  • 这回答了你的问题了吗? Get the position of a spinner in Android
  • 您可以创建全局变量并从 onItemSelectedListener 分配值,这有帮助吗?
  • @FirozMemon 它没有:(
  • @AdityaNandardhane 如何在 kotlin 中创建全局变量?我试过在我的班级顶部做 lateinit var,然后在 .onItemSelectedListener 中分配它,然后使用这个变量,但是启动应用程序时出现错误,说 lateinit 属性尚未初始化
  • 我完全明白为什么会有错误,我只是不知道如何让那个字符串在外面使用它

标签: android kotlin spinner onitemselectedlistener


【解决方案1】:

一种方法,可能是最简单的方法是定义一个全局变量:

private var spinnerSelection: String? = null

只需在您的 onItemSelected 实现中更改它:

spinnerSelection = parent?.getItemAtPosition(pos).toString()

显示整个流程的示例代码:

class MainActivity : AppCompatActivity(), AdapterView.OnItemSelectedListener {

    private var spinnerSelection: String? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val spinner: Spinner = findViewById(R.id.spinner)
        spinner.onItemSelectedListener = this
        ArrayAdapter.createFromResource(
            this,
            R.array.numbers_array,
            android.R.layout.simple_spinner_item
        ).also { adapter ->
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
            spinner.adapter = adapter
        }

        val button: Button = findViewById(R.id.button)

        button.setOnClickListener {
            Log.d("MainActivity", "Currently selected item: $spinnerSelection")
        }
    }

    override fun onItemSelected(parent: AdapterView<*>?, view: View?, pos: Int, id: Long) {
        spinnerSelection = parent?.getItemAtPosition(pos).toString()
    }

    override fun onNothingSelected(parent: AdapterView<*>?) {
        //TODO("Not yet implemented")
    }
}

【讨论】:

    猜你喜欢
    • 2022-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    相关资源
    最近更新 更多