android中spinner的onItemSelected属性

时间:2010-06-30 07:28:09

标签: java android

Spinner spin1 = (Spinner) findViewById(R.id.spinner1);
spin1.setOnItemSelectedListener(this);
spin2 = (Spinner) findViewById(R.id.spinner2);
spin2.setOnItemSelectedListener(this);
ArrayAdapter<String> choice1 = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, data1);
    choice1
            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    choice2 = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, data2);
    choice2
            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

在这段代码中,我创建了两个下拉菜单,现在我的要求是当我从第一个组合中选择项目时,必须根据第一个组合的所选项目更改第二个组合中的数据。

现在在onItemSelected属性中如何专门为第一个下拉列表编码?

2 个答案:

答案 0 :(得分:0)

当选择两个微调器之一时,你的类(this)是触发事件的监听器。

因此该类必须实现捕获这些事件的接口方法。在此方法中,您(1)确定哪个微调器触发了事件(=已更改),如果是微调器1,(2)从微调器1获取实际值,(3)使用设置微调器2的值。这可能导致另一个必须被忽略的事件。

修改

AdapterView.OnItemSelectedListener的一种界面方法是

public abstract void  onItemSelected  (AdapterView<?> parent, View view, int position, long id);

传递的AdapterView(parent)正是触发事件的对象,因此parent == spin1parent == spin2为真(除非你不听更多的小部件)

BTW:spin1spin2需要是类成员,因为onItemSelect方法需要访问它们。

答案 1 :(得分:0)

public void onItemSelected(AdapterView parent, View v,int position, long id) {
 // you decide here based on parent

if (parent==spin1) {
// do something with spin1
}
else if (parent==spin2) {
// do something with spin2
}
}