当所选项目发生变化时,如何为微调器设置事件侦听器?
基本上我想做的是类似这样的事情:
spinner1.onSelectionChange = handleSelectionChange;
void handleSelectionChange(Object sender){
//handle event
}
当所选项目发生变化时,如何为微调器设置事件侦听器?
基本上我想做的是类似这样的事情:
spinner1.onSelectionChange = handleSelectionChange;
void handleSelectionChange(Object sender){
//handle event
}
当前回答
spinner-widget的文档说
旋转器不支持项目单击事件。
您应该使用setOnItemSelectedListener来处理您的问题。
其他回答
spinner.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
//add some code here
}
);
spinner-widget的文档说
旋转器不支持项目单击事件。
您应该使用setOnItemSelectedListener来处理您的问题。
我发现的一个技巧是把你的setOnItemSelectedListeners放在onWindowFocusChanged而不是onCreate中。我还没有发现这样做有任何副作用。基本上,在窗口绘制之后设置侦听器。我不确定onWindowFocusChanged运行的频率,但如果你发现它运行得太频繁,创建一个锁变量是很容易的。
我认为Android可能会使用基于消息的处理系统,如果你把它都放在onCreate中,你可能会遇到旋转器在它被绘制后被填充的情况。你的监听器会在你设置项目位置后启动。当然,这是一个有根据的猜测,但请随意纠正我。
spinner1.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
//add some code here
}
);
对于kotlin,您可以使用:
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
}
override fun onNothingSelected(p0: AdapterView<*>?) {
}
}
注意:对于onItemSelected方法的参数,我使用自定义变量名