#android #kotlin #spinner
#Android #kotlin #счетчик
Вопрос:
(Если вы считаете, что этот вопрос является дубликатом, убедитесь, что все остальные ответы — Java, а не Kotlin)
Я создаю счетчик в приложении для Android из этого кода Kotlin:
val cameraSpinner: Spinner = findViewById(R.id.cameras_spinner)
Я хочу, чтобы счетчик был заполнен этим списком строк, называемых camOptions:
val camOptions = arrayOfNulls<String>(cameraList.size)
for (i in cameraList.indices) { camOptions[i] = cameraList[i].name }
Я делаю это, создавая этот адаптер:
ArrayAdapter.createFromResource(this, camOptions, android.R.layout.simple_spinner_item).also {
adapter ->
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
cameraSpinner.adapter = adapter }
Тем не менее, Android Studio жалуется на «camOptions» в качестве второго параметра для createFromResource():
(IDE ERROR) Type mismatch. Required:Int Found:Array<String?>
Вместо фактического списка текстовых объектов функции требуется целое число, действующее как идентификатор ресурса для некоторого списка текстовых объектов. Я вижу, как это работает в документации Android, где текст предопределен (загрузите значения в XML, затем вызовите этот ресурс), но в моем случае мой список камер генерируется во время выполнения, поэтому у меня нет такой роскоши.
Как мне получить мой список строк для заполнения счетчика?
Ответ №1:
Что ж, Android Studio жалуется, потому что в используемом вами методе четко указано, что он использует, createFromResource
который будет загружать данные из Resource
.
Итак, для того, чтобы вы могли загружать данные не из Resource
. Вы можете использовать это
val adapter: ArrayAdapter<String> = ArrayAdapter<String>(
this,
android.R.layout.simple_spinner_item, camOptions
)