Spinner在初始化时会自动调用一次OnItemSelectedListener事件,
但在实际开发过程中,我们不需要此功能.本人通过总结,终于找到最简单的解决方法
提供的解决办法:
第一步:设定Spinner数据源
第二步:注册事件之前调用 spinner.setSelection(0, true);
第三步:注册事件
第四步:将事件中判断 spinner选择索引结果为0,则退出事件处理
if (arg2==0)
{
return;
}
这样OnItemSelectedListener事件不会被触发
private void initMySpinner() {
String[] phones = {"iPhone","Android","BlackBerry"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this, android.R.layout. simple_spinner_item,
phones);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setPrompt("test");
spinner.setSelection(0, true);
spinner.setOnItemSelectedListener(new SpinnerOnSelectedListener());
}
private class SpinnerOnSelectedListener implements OnItemSelectedListener {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
//退出事件处理(初始化)
if (arg2==0)
{
return;
}
//处理你选择的事件
................
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}
但在实际开发过程中,我们不需要此功能.本人通过总结,终于找到最简单的解决方法
提供的解决办法:
第一步:设定Spinner数据源
第二步:注册事件之前调用 spinner.setSelection(0, true);
第三步:注册事件
第四步:将事件中判断 spinner选择索引结果为0,则退出事件处理
if (arg2==0)
{
return;
}
这样OnItemSelectedListener事件不会被触发
private void initMySpinner() {
String[] phones = {"iPhone","Android","BlackBerry"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this, android.R.layout. simple_spinner_item,
phones);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setPrompt("test");
spinner.setSelection(0, true);
spinner.setOnItemSelectedListener(new SpinnerOnSelectedListener());
}
private class SpinnerOnSelectedListener implements OnItemSelectedListener {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
//退出事件处理(初始化)
if (arg2==0)
{
return;
}
//处理你选择的事件
................
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}