1

我想知道是否单击了 Spinner,只有当用户单击了 Spinner 时,我才对选择的项目不感兴趣。当我尝试它时,会抛出一个编译器错误,显示“不要在 AdapterView 上调用 setOnClickListener ...”。我知道我必须使用 OnItemClickListener,但在这种情况下,我只想捕捉点击,而不是信息。我在同一进程的多个视图中使用相同的侦听器。

4

3 回答 3

1

您可以使用以下代码,它可能会对您有所帮助..

而不是设置微调器的OnClickListener,尝试设置OnTouchListenerOnKeyListener

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 回答