如何使用自定义ID值创建微调器?

时间:2019-05-17 23:05:42

标签: android kotlin

我想创建一个自定义微调器,并用字符串和id值填充它。最终,我将从数据库中提取值,但是在进入该步骤之前,我需要一个带有自定义id值的微调器的工作示例。

我的目标是创建一个具有自定义值的微调框,例如(位置:1,id:56,值:“食品”),(位置:2,id:77,值:“银行”)但我可以t弄清楚如何指定id值,仅指定文本和位置。

我只尝试了教程视频中的一些基本示例,但找不到与设置ID有关的任何内容,我有一个基本的微调器,可以使用自定义字符串值。

我希望仅显示列表中的文本值,但是使用从列表中选择的值时分配的ID。

2 个答案:

答案 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()