【问题标题】:How to pass data to spinner如何将数据传递给微调器
【发布时间】:2020-10-08 18:48:49
【问题描述】:

我有:

data class User( var name: String, var category: String) : Serializable

还有一个微调器:

val categoryList: List<Category> = ArrayList()

categoryList.add(Category("beginner", 0xFFFFFFFF.toInt()))
categoryList.add(Category("intermediate", 0xFFE57373.toInt()))
categoryList.add(Category("advanced", 0xFFFFF176.toInt()))

为了保存数据,我这样做:

editTextName.text.toString(),
spinner.selectedItem.toString()

现在我想用另一种方式做同样的事情:

editTextname.setText(user.name)
spinner. ???????  (user.category)

我不知道该放什么???????

所以现在我发现了这个:

spinner.setSelection(user.category)

但是setSelection() 需要Int 而我需要String

也许有人有想法?

【问题讨论】:

标签: kotlin android-spinner serializable


【解决方案1】:

我的猜测是你应该在你的微调适配器中传递给 user.category 的setSelection 位置。我不知道你的微调器适配器是什么样子的,但我想这应该可以完成这项工作

先改变

val categoryList: List<Category> = ArrayList()

进入

val categoryList: ArrayList<Category> = ArrayList()

然后使用

val category = categoryList.filter { category -> category.FIRST_PROPERTY == user.category}
spinner.setSelection(categoryList.indexOf(category))

不要忘记将FIRST_PROPERTY 替换为您的类别类属性的名称。

或者,您可以使用以下方法:

private fun selectValue(spinner: Spinner, value: Any) {
    for (i in 0 until spinner.count) {
        if (spinner.getItemAtPosition(i) == value) {
            spinner.setSelection(i)
            break
        }
    }
}

【讨论】:

  • 感谢您的回答,但在尝试您的解决方案之前,我终于找到了解决方案。
【解决方案2】:

我终于找到了解决问题的方法。

var position = 0

for (item in categoryList) {
    if (item.category == user.category){
       position = categoryList.indexOf(item)
    }
}

所以之后你可以这样做:spinner.setSelection(position)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多