Заполнить счетчик в Android из списка строк

#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
)