Как передать данные в счетчик - PullRequest
0 голосов
/ 18 июня 2020

У меня есть:

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

Может у кого-то есть идея?

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Наконец-то я нашел решение своей проблемы.

var position = 0

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

Итак, после того, как вы можете сделать: spinner.setSelection(position)

0 голосов
/ 20 июня 2020

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

Сначала измените

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 на имя вашего свойства класса Category.

В качестве альтернативы вы можете использовать этот метод:

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