【问题标题】:Is there a way to get the Spinner object that was changed in OnItemSelectedListener?有没有办法获取在 OnItemSelectedListener 中更改的 Spinner 对象?
【发布时间】:2018-11-09 14:03:35
【问题描述】:

我有一个具有相同 OnItemSelectedListener 的微调器数组,但我需要知道选择了哪个微调器(最好在哪里可以获得数组的索引),以便我可以将它作为另一个数组的索引传递。

这些是我的旋转器:

insulSpinners = new Spinner[6];
insulSpinners[0] = (Spinner) v.findViewById(R.id.insulSpin1);
insulSpinners[1] = (Spinner) v.findViewById(R.id.insulSpin2);
insulSpinners[2] = (Spinner) v.findViewById(R.id.insulSpin3);
insulSpinners[3] = (Spinner) v.findViewById(R.id.insulSpin4);
insulSpinners[4] = (Spinner) v.findViewById(R.id.insulSpin5);
insulSpinners[5] = (Spinner) v.findViewById(R.id.WireSpin);

awcSpinners = new Spinner[6];
awcSpinners[0] = (Spinner) v.findViewById(R.id.awcSpin1);
awcSpinners[1] = (Spinner) v.findViewById(R.id.awcSpin2);
awcSpinners[2] = (Spinner) v.findViewById(R.id.awcSpin3);
awcSpinners[3] = (Spinner) v.findViewById(R.id.awcSpin4);
awcSpinners[4] = (Spinner) v.findViewById(R.id.awcSpin5);
awcSpinners[5] = (Spinner) v.findViewById(R.id.awcSpin6);

for (int i = 0; i < 6; i++) {
    insulSpinners[i].setOnItemSelectedListener(insuls);
    awcSpinners[i].setOnItemSelectedListener(awcs);
    }

我需要来自侦听器的第 n 个 insulSpinner 微调器,以便我可以将函数应用于 awcSpinner 的第 n 个微调器。在 insulSpinner 上选择的文本将在函数中使用。任何想法将不胜感激。

【问题讨论】:

    标签: android onitemselectedlistener


    【解决方案1】:

    OnItemSelectedListener 有两个方法。

    onItemSelected(AdapterView<?> parent, View view, int position, long id)
    onNothingSelected(AdapterView<?> parent)
    

    两者都给你用过的微调器作为参考AdapterView&lt;?&gt; parent。

    您可以将每个微调器的索引添加为标签,然后您可以检查该标签。从标签中可以推断出 spinner 的索引。

    例如

    int[] ids = {R.id.insulSpin1, R.id.insulSpin2, ...}
    for (int idx = 0; idx < ids.length(); i++) {
      Spinner spinner = (Spinner) v.findViewById(ids[idx])
      spinner.setTag(idx); // you may need to wrap it in an Integer object
      insulSpinners[idx] = spinner
    }
    
    // and then in your onItemSelected method callback
    void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
      int tag = (Integer) parent.getTag()
      Spinner selectedSpinner = insulSpinners[tag]
      // do something...
    }
    

    【讨论】:

    • 我需要给每个 insulSpinner 一个不同的适配器吗?他们目前都有相同的。轻松改变
    • 我不这么认为,但我不知道你在适配器中做了什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多