【问题标题】:How to change values of variable using Spinner?如何使用 Spinner 更改变量的值?
【发布时间】:2020-10-12 01:12:11
【问题描述】:

如何使用微调器小部件更改变量的值。

字符串.xml

    <string name="selected_item">Selected item:</string>
    <string-array name="Languages">
        <item>English</item>
        <item>Latin</item>
        <item>French</item>
    </string-array>

主要活动

        val spinner = findViewById<Spinner>(R.id.spinner)
        if (spinner != null) {
            val adapter = ArrayAdapter(
                this,
                android.R.layout.simple_spinner_item, languages
            )
            spinner.adapter = adapter

            spinner.onItemSelectedListener = object :
                AdapterView.OnItemSelectedListener {
                override fun onItemSelected(
                    parent: AdapterView<*>,
                    view: View, position: Int, id: Long
                ) {
                  
                   //what to do here?
                }

            }
        }

假设我想改变这个变量的值

strokeManager.lang = "en"

【问题讨论】:

    标签: android spinner android-spinner kotlin-android-extensions


    【解决方案1】:

    因此,您将希望使用该位置从用于填充微调器的列表中访问它。

    strokeManager.lang = languageMapToLangCode[languages.get(position)] 
    

    这应该在你的类中定义,微调器可以访问它

    val languageMapToLangCode: HashMap<String, String> = hashMapOf("French" to "fr", "Latin" to "ln", "English to "en")
    

    【讨论】:

    • 我想在选择项目时更改字符串值假设我选择拉丁语我想要 strokeManage.lang = "ln" ,对于法语 strokeManage.lang = "fr"
    • 您需要创建一个映射,将语言名称映射到其对应的语言代码,并以语言名称作为键。我会更新答案
    • 是否需要在languageMapToLangCode[languages.get(position)]之后添加.toString()
    • 您不需要这样做,因为映射被定义为 类型,因此语言应该知道从映射访问键值对的值已经是字符串。
    猜你喜欢
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 1970-01-01
    相关资源
    最近更新 更多