有没有办法使用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 ... 

Solutions Collecting From Web of "有没有办法使用setOnClickListener与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; } });