问题描述
(如果您认为这个问题是重复的,请检查其他答案都是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
)