从字符串列表中填充 Android 中的 Spinner
Populate Spinner in Android from List of Strings
(如果您认为此问题重复,请检查其他答案是否都是 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
)
(如果您认为此问题重复,请检查其他答案是否都是 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
)