【问题标题】:Kotlin: function setSelection() doesn't work outside onItemSelected() functionKotlin:函数 setSelection() 在 onItemSelected() 函数之外不起作用
【发布时间】:2021-10-21 04:04:46
【问题描述】:

我有一个微调器,当我从列表中选择某些内容时,会发生一些操作:

val arrayAdapter =
            ArrayAdapter(requireContext(), R.layout.dropdown_item, carBrandList)
        binding.spinner.adapter = arrayAdapter

        binding.spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onItemSelected(
                adapterView: AdapterView<*>?,
                view: View?,
                position: Int,
                id: Long,
            ) {
                refuelList.clear()
                realTimeUpdates(carIdList[position])
                saveData(requireContext(), carIdList[position])
                saveSpinnerPosition(requireContext(), position)
            }

        override fun onNothingSelected(parent: AdapterView<*>?) {
        }
    }

我想将微调器位置存储在共享首选项中,它可以工作。
如果用户打开特定片段,我想检索微调器位置。
如何在此代码之外使用函数setSelection()setSelection() 仅在 onItemSelected() 函数中对我有效

【问题讨论】:

    标签: android kotlin spinner


    【解决方案1】:

    它应该在onItemSelected() 之外工作,只要确保您在共享首选项中保存了正确的微调器位置。

    【讨论】:

    • 是的,但事实并非如此。当我尝试在 onItemSelected() 之外测试和键入例如 binding.spinner.setSelection(2) 时的事件没有任何反应。只有当我在 onItemSelected() 中键入 adapterView.setSelection(2) 时它才有效。当测试即时通讯传递正确的微调器位置值但不幸的是它不起作用。
    • 我明白了,请分享您的saveSpinnerPosition(requireContext(), position) 实现以及您在onItemSelected() 之外使用setSelection() 的整个代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 2016-02-26
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    相关资源
    最近更新 更多