我想知道如果点击了Spinner,我对选择的项目不感兴趣,只有当用户点击了Spinner时才会感兴趣。当我尝试它时,抛出编译器错误,显示“不要在AdapterView上调用setOnClickListener ...”。我知道我将使用OnItemClickListener,但在这种情况下,我只想捕获点击,而不是信息。 我在同一个过程的几个视图中使用相同的监听器。
答案 0 :(得分: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;
}
}
};
答案 1 :(得分:0)
您有以下选择:
1)创建一个扩展MySpinner
的类Spinner
并覆盖其onTouchEvent
方法。如果用户点击了Spinner
。
2)实际设置OnItemClickListener
。基本上,每次单击Spinner
时都会触发此侦听器,因为每次单击某个项目时它都会被触发,而Spinner
本身只是所有项目。
答案 2 :(得分:0)
您的活动必须扩展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);