我有一个在对话框视图中显示的微调器,对话框开始时onItemSelected
叫做。我真的不想处理这个,但只有当用户做出选择时。所以我要么需要阻止这种情况(也许是因为没有设置默认值?),要么我需要知道不是用户在做出此选择?
本着比尔·莫特解决方案的精神,另一个选择是使OnItemSelectedListener
还有一个OnTouchListener
。然后可以在 onTouch 方法中将用户交互标志设置为 true 并在onItemSelected()
一旦处理了选择更改。我更喜欢这个解决方案,因为用户交互标志是专门为微调器处理的,而不是为活动中可能影响所需行为的其他视图处理的。
In code:
为微调器创建监听器:
public class SpinnerInteractionListener implements AdapterView.OnItemSelectedListener, View.OnTouchListener {
boolean userSelect = false;
@Override
public boolean onTouch(View v, MotionEvent event) {
userSelect = true;
return false;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
if (userSelect) {
// Your selection handling code here
userSelect = false;
}
}
}
将侦听器添加到微调器中作为OnItemSelectedListener
and an OnTouchListener
:
SpinnerInteractionListener listener = new SpinnerInteractionListener();
mSpinnerView.setOnTouchListener(listener);
mSpinnerView.setOnItemSelectedListener(listener);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)