use*_*720 14 android android-spinner
我的Android应用程序中有一个微调器,并且onItemSelected()在进入活动时会自动触发其事件.
我该如何避免这种情况?
tha*_*h84 10
我们可以使用一个标志,并在真正触摸微调器时启用它.
private boolean isSpinnerTouched = false;
spinner.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
isSpinnerTouched = true;
return false;
}
});
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapter, View arg1,
int arg2, long arg3) {
if (!isSpinnerTouched) return;
// do what you want
}
});
Run Code Online (Sandbox Code Playgroud)
我已经解决了这个问题,您可以通过不对微调器设置任何默认值来避免这个问题
int initialposition=spinner.getSelectedItemPosition();
spinner.setSelection(initialposition, false);
Run Code Online (Sandbox Code Playgroud)
这将避免进入 onItemSelected()
要添加Jerry Abraham,您应该在启用setOnItemSelectedListener之前清除选择
Spinner mSpinner=(Spinner)findViewById(R.id.mySpinner);
int initialSelectedPosition=mSpinner.getSelectedItemPosition();
mSpinner.setSelection(initialSelectedPosition, false); //clear selection
mSpinner.setOnItemSelectedListener(this); //set listener after clearing section
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16561 次 |
| 最近记录: |