You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Spinner仅显示单个企业项:如何加载完整empresa列表?

解决Spinner仅显示单个企业条目的问题

你的代码核心问题是在循环内部重复创建列表、适配器并覆盖Spinner的配置——每次循环都会新建一个只包含当前企业的列表,然后把Spinner的适配器换成这个新的,最终Spinner只能保留最后一次循环的条目。

修正步骤

  • 先在循环外初始化空的企业列表
  • 遍历clientes,把所有企业都添加到这个列表里
  • 循环结束后,再统一创建适配器、设置给Spinner并配置选中监听器

修改后的完整代码

private fun initCharacter(clientes : List<ResultsEmpresa>) {
    // 循环外初始化空列表,用于存储所有企业数据
    val listCliente: MutableList<SpinnerClientes> = ArrayList()
    
    // 遍历所有数据,将企业逐一加入列表
    clientes.forEach {
        val empresas = it.empresa
        listCliente.add(SpinnerClientes(empresas))
    }
    
    // 统一配置Spinner的适配器和监听器
    val spnAdapter = SpinnerClientesAdapter(this@AddObra,
        R.layout.kecamatan, R.id.spinnerText, listCliente)
    spnClients?.adapter = spnAdapter
    
    spnClients?.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
        override fun onItemSelected(
            parent: AdapterView<*>?, view: View, position: Int, id: Long,)
        {
            val desaDetails = spnAdapter.getItem(position)
            textView_empresa?.text = desaDetails.nom_empresa
        }
        override fun onNothingSelected(parent: AdapterView<*>?) {}
    }
}

额外提示

建议把代码中的!!强制非空断言换成?.安全调用,避免因控件未初始化导致的空指针异常。

内容的提问来源于stack exchange,提问作者Rafel C.F

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 00:09:24