有没有办法使用setOnClickListener与Android的微调?

java.lang.RuntimeException是“不要为一个AdapterView调用setOnClickListener,你可能需要setOnItemClickListener”,但这是不正确的。 我使用setOnItemClickListener来做一些基于新select的东西,但是我也需要在用户改变select之前做一些事情。 具体来说,我正在收集数据,每个select需要保存到一个文件之前,移动到另一个select,因为其他select与不同的数据集相关联。 有没有办法使用setOnClickListener与Android的微调

spinner.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Do some stuff before the user changes the selection ... spinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { // Do some stuff based onItemSelected ... 

  • 在没有AlertDialog的情况下,多选android微调
  • Android - 微调,onItemSelected(...)没有被调用
  • 如何dynamic填充文本+图像的Android微调
  • Nexus 7 Spinners太大
  • 从自定义视图到其所在活动的正确沟通方式是什么?
  • 微调不工作在Android
  • 如何设置微调器下拉列表的最大长度?
  • 在android微调中删除间距或填充
  • 您必须在微调器的基础视图(通常是带有id:android.R.id.text1的TextView)上设置Click监听器。 要做到这一点:

    • 创build一个自定义的微调
    • 在构造函数(带属性)中,通过提供布局android.R.layout.simple_spinner_item来创build微调器
    • 做一个findViewById(android.R.id.text1)来获取TextView
    • 现在将onClickListener设置为TextView

    您可以使用ontouch事件复制onclick事件

      this.spinner=(Spinner)findViewById(R.id.spinner); this.spinner.setClickable(false); this.spinner.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Log.v(TAG, "spinner touch"); //replicating a click if(event.getAction() == MotionEvent.ACTION_UP){ v.playSoundEffect(android.view.SoundEffectConstants.CLICK); } return true; } });