首页 > 解决方案 > 当微调器需要 XML 字符串数组时,将数组从 Kotlin 设置为 Android 微调器

问题描述

我通过设置string-arrayXML 资源将 Android 的微调器用于静态值。这没有问题。

但是,对于特定的微调器,我需要根据 API 返回动态设置数据。虽然我已将返回值设置为字符串数组,但当我将其发送到适配器时,它需要类型Int(从 XML 返回的字符串数组转换为类型)。

我不确定如何使这些数组在 Kotlin 中工作以被微调器接收。

val managerSpinner: Spinner = binding.spinnerManager
        val managerList: MutableList<String> = mutableListOf()
        var managerArr: Array<String>

        viewModel.managers.observe(viewLifecycleOwner, {
            if (null != it) {
                it.items?.forEach { manager ->
                    managerList.add(manager.fullname!!)
                }
                managerArr = managerList.toTypedArray()
                ArrayAdapter.createFromResource(
                        activity?.applicationContext!!,
                        managerArr!!,
                        android.R.layout.simple_spinner_item
                ).also { adapter ->
                    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
                    managerSpinner.adapter = adapter
                }
            }
        })

标签: androidkotlinspinnerandroid-spinner

解决方案


怎么样:

  1. 它使用ArrayAdapter构造函数而不是使用createFromResource函数工厂
  2. 使用addAll 函数添加项目
val managerSpinner: Spinner = binding.spinnerManager
        val managerList: MutableList<String> = mutableListOf()
        var managerArr: Array<String>

        viewModel.managers.observe(viewLifecycleOwner, {
            if (null != it) {
                it.items?.forEach { manager ->
                    managerList.add(manager.fullname!!)
                }
                managerArr = managerList.toTypedArray()
                ArrayAdapter(
                        activity?.applicationContext!!,
                        android.R.layout.simple_spinner_item
                ).also { adapter ->
                    adapter.addAll(managerArr)
                    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
                    managerSpinner.adapter = adapter
                }
            }
        })


推荐阅读