从字符串列表填充Android中的Spinner

问题描述

(如果您认为这个问题是重复的,请检查其他答案都是Java而不是Kotlin)

我使用以下Kotlin代码在Android应用中生成了一个微调框:

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?>

该函数需要一个整数作为文本对象某些列表的资源ID,而不是文本对象的实际列表。我在预定义了文本的Android文档中看到了它的工作方式(加载XML值,然后调用该资源),但是就我而言,我的摄像机列表是在运行时生成的,所以我没有那么奢侈。

如何获取我的字符串列表以填充微调器?

解决方法

好吧,Android Studio抱怨,因为您使用的方法清楚地表明它正在使用createFromResource,这将从Resource加载数据。

因此,为了让您Resource加载数据。您可以使用此

val adapter: ArrayAdapter<String> = ArrayAdapter<String>(
     this,android.R.layout.simple_spinner_item,camOptions
)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...