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属性中如何专门为第一个下拉列表编码?
答案 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 == spin1
或parent == spin2
为真(除非你不听更多的小部件)
BTW:spin1
和spin2
需要是类成员,因为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
}
}