В MainActivity у него есть spinner, где элемент можно получить с сервера, используя Coroutine
Код
fun getList() {
val service = RetrofitFactory.makeRetrofitService()
GlobalScope.launch(Dispatchers.Main) {
val request = WebApi.getList(context)
request?.userName.let {
for (i in it!!.iterator()) {
list.put("", "")
list.put("None","None")
list[i.name!!] = i.id!! // Ali
}
spinnerName?.let { spn ->
spn.adapter = ArrayAdapter(context, R.layout.spinner_item, list.keys.toTypedArray())
val position = (spn.adapter as ArrayAdapter<String>).getPosition("")
spn.setSelection(position)
}
}
}
}
Сначала я хочу, чтобы спиннер показывал empty по умолчанию. Когда пользователь нажимает на счетчик, он показывает только два предмета, то есть «Нет» и «Али».
Как я могу этого добиться?
До сих пор я мог установить пустую строку по умолчанию, но когда я нажимаю, в счетчике есть 3 элемента: Нет, Али и пустая строка.
Чтобы сделать ваш empty по умолчанию, но не в выпадающий список, вы можете предоставить свой список адаптеров, который содержит ваш объект empty в конце, но для количество адаптеров укажите на один счет меньше в методе getCount(). так что последняя запись будет игнорироваться в раскрывающемся списке.
Посмотрите, как это можно сделать:
val list = arrayListOf("None","Ali","Empty") // You can provide any type of list here
val adapter = object : ArrayAdapter<String>(context, itemLayout, list) {
//Override getCount method and we reduce one count less when list is there, so that last entry would be ignored in dropdown.
override fun getCount(): Int {
val count = super.getCount()
return if (count > 0) count - 1 else count
}
}
your_spinner.adapter = adapter
your_spinner.setSelection(list.size-1) // We make our last list item as default entry
Изменить для О.П.:
spinnerName?.let { spn ->
val adapterList = list.keys.toMutableList().apply { this.add("Empty") }
spn.adapter = object : ArrayAdapter<String>(context, R.layout.spinner_item, adapterList) {
//Override getCount method and we reduce one count less when list is there, so that last entry would be ignored in dropdown.
override fun getCount(): Int {
val count = super.getCount()
return if (count > 0) count - 1 else count
}
}
spn.setSelection(adapterList.size - 1)
}
Вы уже использовали этот синтаксис list.keys.toTypedArray() верно? используйте так: list.keys.toMutableList().apply { this.add("Empty") }
как мне реализовать метод getCount в моем коде?
Вы добавляете пустую строку в конец списка?
@Ху, в чем тогда была проблема??
о нет... разбился :(
Давайте продолжить обсуждение в чате.
а как мой список
hashmap?