当所选项目发生变化时,如何为微调器设置事件侦听器?
基本上我想做的是类似这样的事情:
spinner1.onSelectionChange = handleSelectionChange;
void handleSelectionChange(Object sender){
//handle event
}
当所选项目发生变化时,如何为微调器设置事件侦听器?
基本上我想做的是类似这样的事情:
spinner1.onSelectionChange = handleSelectionChange;
void handleSelectionChange(Object sender){
//handle event
}
当前回答
spinner1.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
//add some code here
}
);
其他回答
Spinner spnLocale = (Spinner)findViewById(R.id.spnLocale);
spnLocale.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
// Your code here
}
public void onNothingSelected(AdapterView<?> adapterView) {
return;
}
});
注意:记住一件事。
OnItemSelectedListener事件将执行两次:
旋转器初始化 手动选择的用户
试着用标志变量来区分这两者。
我认为最好的方法是让flagitemselected = 0;在onCreate()。在itemselected event上增加标志,即flagitemselected++;然后检查
if(flagitemselected!=1)
{
// do your work here
}
我想这会有帮助。
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
}
);
对于kotlin,您可以使用:
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
}
override fun onNothingSelected(p0: AdapterView<*>?) {
}
}
注意:对于onItemSelected方法的参数,我使用自定义变量名
你在onCreate或onStart中设置OnItemSelectedListener并不重要——它仍然会在活动创建或启动期间被调用(分别)。 所以我们可以在onCreate中设置它(而不是在onStart中!) 只需添加一个标志来计算第一次初始化:
private Spinner mSpinner;
private boolean mSpinnerInitialized;
然后在onCreate(或onCreateView)中只需:
mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
if (!mSpinnerInitialized) {
mSpinnerInitialized = true;
return;
}
// do stuff
}
public void onNothingSelected(AdapterView<?> adapterView) {
return;
}
});