我想知道是否单击了 Spinner,只有当用户单击了 Spinner 时,我才对选择的项目不感兴趣。当我尝试它时,会抛出一个编译器错误,显示“不要在 AdapterView 上调用 setOnClickListener ...”。我知道我必须使用 OnItemClickListener,但在这种情况下,我只想捕捉点击,而不是信息。我在同一进程的多个视图中使用相同的侦听器。
问问题
288 次
3 回答
1
您可以使用以下代码,它可能会对您有所帮助..
而不是设置微调器的OnClickListener
,尝试设置OnTouchListener
和OnKeyListener
。
spinner.setOnTouchListener(spinnerOnTouch);
spinner.setOnKeyListener(spinnerOnKey);
and the listeners:
private View.OnTouchListener spinnerOnTouch = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
//Your code
}
return false;
}
};
private static View.OnKeyListener spinnerOnKey = new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
//your code
return true;
} else {
return false;
}
}
};
于 2013-06-14T14:29:50.700 回答
0
Your Activity must extend OnItemSelectedListener.
Then, you acitivty must implement 2 functions
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
Don't forget to add listener on your spinner like this
yourspinner.setOnItemSelectedListener(this);
于 2013-06-14T14:48:17.810 回答
0
您有以下选择:
1) 创建一个MySpinner
扩展Spinner
并覆盖其onTouchEvent
方法的类。如果用户点击了Spinner
.
2)实际设置OnItemClickListener
。基本上,这个监听器会在任何时候Spinner
被点击,因为每次点击一个项目时它都会被触发,而它Spinner
本身就是所有的项目。
于 2013-06-14T14:27:48.170 回答