我想创建一个自定义微调器,并用字符串和id值填充它。最终,我将从数据库中提取值,但是在进入该步骤之前,我需要一个带有自定义id值的微调器的工作示例。
我的目标是创建一个具有自定义值的微调框,例如(位置:1,id:56,值:“食品”),(位置:2,id:77,值:“银行”)但我可以t弄清楚如何指定id值,仅指定文本和位置。
我只尝试了教程视频中的一些基本示例,但找不到与设置ID有关的任何内容,我有一个基本的微调器,可以使用自定义字符串值。
我希望仅显示列表中的文本值,但是使用从列表中选择的值时分配的ID。
答案 0 :(得分:2)
您可以创建像这样的对的列表
val list = listOf(
Pair(56, "food"),
Pair(77, "bank")...
)
//or create data class for it
data class Data (val id: Int, val value: String)
val list = listOf(
Data (56, "food"),
Data (77, "bank")...
)
然后根据位置从列表中获取配对ID,例如
list[position].first
// or using data class
list[position].id
并将所需的字符串值放入微调器
请记住以与填充微调框时值顺序相同的方式创建对列表。
答案 1 :(得分:0)
经过更多研究,我找到了一种解决方案,该解决方案对我来说很有效。我正在为旋转器使用SimpleCursorAdapter,并将数据库中的数据放入Cursor中。只要Cursor的主键字段标记为“ _id”,它就可以正常工作。
这一切都放在活动文件中:
var cCursor = db.readCategoryForSpinner()
val adapterCols = arrayOf("Name")
val adapterRowViews = intArrayOf(android.R.id.text1)
val cAdapter = SimpleCursorAdapter(context, android.R.layout.simple_spinner_item, cCursor, adapterCols, adapterRowViews, 0)
cAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
sp_CategorySpinner.adapter = cAdapter
以下是填充光标的sql:
fun readCategoryForSpinner() : Cursor{
val db = this.readableDatabase
val sql = "select " + COL_PK_CATEGORY + " _id, " + COL_NAME + " from " + TBL_CATEGORY
val c = db.rawQuery(sql, null)
c.moveToFirst()
return c
}
最后,这就是我在需要时获取值的方式,就我而言,这是按下按钮时的方式:
var category = sp_CategorySpinner.selectedItemId.toInt()