最近做的项目中用到Spinner这个组件,发现一个奇怪的问题就是,每次进入页面,用户没去点击Spinner 都会自动调用一次setOnItemSelectedListener 。百思不得其解,结果解决方案如下:
private boolean isUserClicked1 = false;
dateSpinner.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
isUserClicked1 = true;
v.performClick();
return false;
}
});
dateSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Log.d("dateSpinner","date setOnItemSelectedListener ");
if(!isUserClicked1) {
return ;
}
}