如何将数据传递给微调器
How to pass data to spinner
我有:
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
也许有人有想法?
我的猜测是您应该传递到微调器适配器中 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
替换为类别 class 中你的名字 属性。
或者,您可以使用此方法:
private fun selectValue(spinner: Spinner, value: Any) {
for (i in 0 until spinner.count) {
if (spinner.getItemAtPosition(i) == value) {
spinner.setSelection(i)
break
}
}
}
我终于找到了解决问题的方法。
var position = 0
for (item in categoryList) {
if (item.category == user.category){
position = categoryList.indexOf(item)
}
}
所以之后你可以做:spinner.setSelection(position)
我有:
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
也许有人有想法?
我的猜测是您应该传递到微调器适配器中 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
替换为类别 class 中你的名字 属性。
或者,您可以使用此方法:
private fun selectValue(spinner: Spinner, value: Any) {
for (i in 0 until spinner.count) {
if (spinner.getItemAtPosition(i) == value) {
spinner.setSelection(i)
break
}
}
}
我终于找到了解决问题的方法。
var position = 0
for (item in categoryList) {
if (item.category == user.category){
position = categoryList.indexOf(item)
}
}
所以之后你可以做:spinner.setSelection(position)