问题描述
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属性中如何为第一个下拉菜单专门编码?
1楼
当两个微调器之一的选择更改时,您的课程( this
)是引发事件的侦听器。
因此,该类必须实现捕获那些事件的接口方法。 在此方法中,你(1) 确定微调触发事件(=发生了变化),如果是微调1,(2)从离心器1,并得到实际值(3)使用该值来设置微调2.本可能会导致另一个事件,必须将其忽略。
编辑
AdapterView.OnItemSelectedListener
的接口方法之一是
public abstract void onItemSelected (AdapterView<?> parent, View view, int position, long id);
该适配器视图( parent
被传递)正是对象触发事件,所以无论是parent == spin1
或parent == spin2
是真实的(除非你不听更多的widget)。
BTW: spin1
和spin2
需类成员,因为onItemSelect
方法需要访问它们。
2楼
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
}
}