Как создать спиннер с пользовательскими значениями идентификатора? - PullRequest
1 голос
/ 18 мая 2019

Я хотел бы создать собственный счетчик и заполнить его строками и значениями идентификатора.В конечном итоге я получу значения из базы данных, но мне нужен рабочий пример счетчика с пользовательскими значениями идентификатора, прежде чем я перейду к этому шагу.

Моя цель - создать счетчик с пользовательскими значениями, такими как (позиция: 1, id: 56, значение: «food»), (position: 2, id: 77, value: «bank»), но я не могу понять, как указать значение id, только текст и положение.

Я пробовал только некоторые базовые примеры из обучающих видео и не могу найти ничего, связанного с настройкой идентификатора. У меня есть обычный счетчик с работающими пользовательскими значениями строк.

Я ожидаю показать только текстзначения из моего списка, но используйте идентификатор, который я назначил при использовании выбранного значения из списка.

Ответы [ 2 ]

2 голосов
/ 18 мая 2019

Вы можете создать список пар, как это

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")...
           )

А затем на основе позиции просто получить из списка идентификатор пары, как

list[position].first

// or using data class

list[position].id

И поставить значения строк вам нужновращатель

Не забудьте создать список пар в том же порядке значений, что и заполнитель счетчика.

0 голосов
/ 19 мая 2019

После долгих исследований я нашел решение для того, что искал, и это хорошо для меня. Я использую SimpleCursorAdapter для счетчика и помещаю данные из базы данных в курсор. Пока у Курсора есть поле первичного ключа, помеченное как "_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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...