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

Android中如何获取动态创建的Spinner选中值?

问题根源

你当前的代码里用了一个全局的spinner变量来存储动态创建的Spinner组件,但在循环生成多行表格的过程中,这个变量会被每一次新创建的Spinner覆盖。最终,所有按钮的点击事件都会访问同一个spinner变量(也就是最后一个创建的Spinner),这就导致你无法获取对应行的Spinner选中值。

解决方案

这里提供两种简单有效的修复方式,你可以根据自己的代码结构选择:

方案1:用数组存储所有Spinner,和按钮ID对应

和你存储按钮的myButton数组类似,我们也可以创建一个Spinner数组来保存每一行的Spinner引用:

步骤1:定义Spinner数组

在类里声明一个和按钮数组同长度的Spinner数组:

Spinner[] mySpinners;

在初始化表格前,记得初始化这个数组(比如和myButton一起初始化):

mySpinners = new Spinner[tempBranch.length]; // 假设tempBranch是你的数据源数组

步骤2:保存每个Spinner的引用

在创建Spinner的代码块里,把当前Spinner存入数组:

spinner = new Spinner(this);
// ... 省略Adapter设置等代码 ...
tbrow.addView(spinner);
mySpinners[i] = spinner; // 保存当前行的Spinner

步骤3:点击按钮时获取对应Spinner的值

修改按钮点击事件的代码,通过按钮ID获取对应数组位置的Spinner:

private View.OnClickListener btnClick2(final Button button) {
    return new View.OnClickListener(){
        public void onClick(View v){
            idEmpl = id[v.getId()];
            // 通过按钮ID拿到对应行的Spinner
            Spinner targetSpinner = mySpinners[v.getId()];
            tmpBranch = targetSpinner.getSelectedItem().toString();
            // ... 后续逻辑 ...
        }
    };
}

方案2:用setTag()把Spinner绑定到对应按钮上

这种方式不需要额外维护数组,直接把当前行的Spinner绑定到按钮的Tag属性上,点击时再取出来:

步骤1:绑定Spinner到按钮

在创建按钮的代码里,添加一行绑定Tag的代码:

final Button rowButton2 = new Button(this);
rowButton2.setText("OK");
rowButton2.setId(i);
// 把当前行的Spinner绑定到按钮的Tag上
rowButton2.setTag(spinner);
tbrow.addView(rowButton2);
myButton[i] = rowButton2;
myButton[i].setOnClickListener(btnClick2(rowButton2));

步骤2:点击按钮时从Tag中获取Spinner

修改点击事件的代码:

private View.OnClickListener btnClick2(final Button button) {
    return new View.OnClickListener(){
        public void onClick(View v){
            idEmpl = id[v.getId()];
            // 从按钮的Tag中取出对应的Spinner
            Spinner targetSpinner = (Spinner) button.getTag();
            tmpBranch = targetSpinner.getSelectedItem().toString();
            // ... 后续逻辑 ...
        }
    };
}

这两种方式都能解决你的问题,推荐方案2,因为它更简洁,不需要额外维护数组,减少出错的可能。

内容的提问来源于stack exchange,提问作者evgeny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:23:29