【问题标题】:ClickListener on a Spinner error微调器错误上的 ClickListener
【发布时间】:2013-06-14 22:53:38
【问题描述】:

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

【问题讨论】:

  • 请发布您的代码和您在 logcat 中看到的错误

标签: android spinner onclicklistener


【解决方案1】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-02
        • 1970-01-01
        • 2017-02-09
        • 1970-01-01
        • 2019-01-06
        • 2016-06-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多