对Spinner错误的ClickListener

时间:2013-06-14 14:21:34

标签: android spinner onclicklistener

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

3 个答案:

答案 0 :(得分:1)

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

尝试设置OnClickListenerOnTouchListener,而不是设置微调器的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);