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

标签 android kotlin 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 加载数据。

因此,为了让您资源加载数据。你可以使用这个

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

关于android - 从字符串列表填充 Android 中的 Spinner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63554104/

相关文章:

android - 无法在单元测试中访问 `Transformations.map` 中的值

java - 从 Kotlin 调用 Java 编写的抛出异常的方法时,如何实现空安全?

mongodb - Kotlin 数据类 : How generate an MongoDB ObjectId for an embedded document

java - 更改安卓 :textColor with a spinner

android - 在微调器android中包装文本

java - 如何从父类(super class)到子类重用代码 Intent Intent=new Intent(context,Activity.class) ?

android - 当我编写 thread.stop() 时,这个日志是什么?

android - ArrayIndexOutOfBoundsException 与 ListView 中的多个 View 的自定义 Android 适配器

android - 读取 Sqlite 数据库时出错 : Database google_app_measurement_local. db not found

java - Android Spinner dropDownHorizo​​ntalOffset 不起作用,但 dropDownVerticleOffest 是