【问题标题】:ClickListener on a Spinner error微调器错误上的 ClickListener
【发布时间】:2013-06-14 22:53:38
【问题描述】:
我想知道是否点击了 Spinner,我对选择的项目不感兴趣,只有当用户点击了 Spinner 时。当我尝试它时,会抛出一个编译器错误,显示“不要在 AdapterView 上调用 setOnClickListener ...”。我知道我必须使用 OnItemClickListener,但在这种情况下,我只想捕捉点击,而不是信息。
我在同一个进程的多个视图中使用同一个监听器。
【问题讨论】:
标签:
android
spinner
onclicklistener
【解决方案1】:
您可以使用以下代码,它可能会对您有所帮助..
尝试设置OnTouchListener 和OnKeyListener,而不是设置微调器的OnClickListener。
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;
}
}
};
【解决方案2】:
您有以下选择:
1) 创建一个扩展Spinner 的类MySpinner 并覆盖其onTouchEvent 方法。如果用户点击了Spinner,您可以在此处捕获。
2) 实际设置为OnItemClickListener。基本上,只要单击 Spinner 就会触发此侦听器,因为每次单击项目时都会触发它,而 Spinner 本身就是所有项目。
【解决方案3】:
您的 Activity 必须扩展 OnItemSelectedListener。
然后,您的活动必须实现 2 个功能
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
不要忘记像这样在微调器上添加监听器
yourspinner.setOnItemSelectedListener(this);