如何在所选项目更改时为Spinner设置事件侦听器?
基本上我想要做的是类似于这样的事情:
spinner1.onSelectionChange = handleSelectionChange;
void handleSelectionChange(Object sender){
//handle event
}
#1楼
我发现的一个技巧是将你的setOnItemSelectedListeners放在onWindowFocusChanged而不是onCreate。 我没有发现这样做的任何不良副作用。 基本上,在绘制窗口后设置监听器。 我不确定onWindowFocusChanged运行的频率是多少,但如果您发现它经常运行,那么创建自己的锁变量就很容易了。
我认为Android可能正在使用基于消息的处理系统,如果你把它全部放在onCreate中,你可能会遇到微调器在绘制之后被填充的情况。 因此,在设置项目位置后,您的听众将会启动。 当然,这是一个有根据的猜测,但请随时纠正我。
#2楼
spinner1.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
//add some code here
}
);
#3楼
找到您的微调名称并找到ID然后实现此方法。
spinnername.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView parentView, View selectedItemView, int position, long id) {
// your code here
}
@Override
public void onNothingSelected(AdapterView parentView) {
// your code here
}
});
#4楼
您可以在Activity中实现AdapterView.OnItemSelectedListener类。
然后使用onCreate()的以下行
Spinner spin = (Spinner) findViewById(R.id.spinner);
spin.setOnItemSelectedListener(this);
然后覆盖这两个方法:
public void onItemSelected(AdapterView parent, View v, int position, long id) {
selection.setText(items[position]);
}
public void onNothingSelected(AdapterView parent) {
selection.setText("");
}
#5楼
spinner-widget的文档说
微调器不支持项目单击事件。
您应该使用setOnItemSelectedListener来处理您的问题。
文章来源: www.oschina.net,作者:技术盛宴,版权归原作者所有,如需转载,请联系作者。
原文链接:https://my.oschina.net/stackoom/blog/3166166