0

我正在飞行中画一些旋转器。问题是,我如何知道我正在使用 onItemSelected。

例子:

    for (int i = 0; i <5; i + +) {
        sp = new Spinner (this);
        sp.setAdapter (un_adapter);
        sp.setOnItemSelectedListener (this);
    }

我用的是什么微调器?

    public void onItemSelected (AdapterView <?> arg0, View view, int pos, long id) {
    //??????????????
    }
4

2 回答 2

1

您可以使用 setTag 和 getTag 来识别当前微调器。IE

 for (int i = 0; i <5; i + +) {
        sp = new Spinner (this);
        sp.setAdapter (un_adapter);
        sp.setTag(i.toString());
        sp.setOnItemSelectedListener (this);
    }

并且可以得到它

public void onItemSelected(AdapterView<?> arg0, View v, int p,
                long arg3) {
                            arg0.getTag;
                           }
于 2013-04-04T13:12:03.740 回答
0

有一种更简单的方法可以做到这一点。

创建一个微调器,为他添加一个 id。

Spinner spinner = new Spinner(context);
spinner.setId(R.id.defined);

然后在 Values 文件夹中的 id.xml 文件中添加一个 id。像这样:

<item name="defined_0" type="id"/>
<item name="defined_1" type="id"/>

为了您的目的,由defined_0 + 1 表示的id 与defined_1 相同会派上用场。因此,您可以在 for 循环中以编程方式添加 id

for (int i = 0; i <5; i + +) {
    sp = new Spinner (this);
    sp.setId(R.id.defined_0+i);
    sp.setAdapter (un_adapter);
    sp.setOnItemSelectedListener (this);
    }

如果你这样说,id defined_1 将链接到微调器编号 2。=)

public void onItemSelected (AdapterView <?> arg0, View view, int pos, long id) {
    if (view.getID == R.id.defined_0){
       //whatever is supposed to happen if Spinner 1 is selected/used
    }
}
于 2013-04-04T13:31:29.817 回答