带有单击侦听器的微调器

时间:2011-09-13 13:37:35

标签: java android

我正在使用微调器,当我尝试提取所选微调器项的项ID时显示错误。 我的代码在这里:

public void dispspi()
  {
    spinner = (Spinner) findViewById(R.id.spinner1);
    ArrayAdapter <String> adap= new ArrayAdapter(this, android.R.layout.simple_spinner_item, level);

      spinner.setAdapter(adap);
      spinner.setOnItemClickListener(new OnItemClickListener() {

        public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) 
        {
            int item = spinner.getSelectedItemPosition();

            p=item;
        }


        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub

        }



    });
  }

如何获取微调器的项ID?任何帮助表示赞赏。谢谢提前

5 个答案:

答案 0 :(得分:13)

IIRC,你应该使用一个选定的听众,而不是点击:

spinner.setOnItemSelectedListener(new OnItemSelectedListener()

然后,您可以将覆盖标记添加到所选方法。

答案 1 :(得分:7)

private String selecteditem;

spinner.setOnItemSelectedListener(new OnItemSelectedListener() 
{    
 @Override
 public void onItemSelected(AdapterView adapter, View v, int i, long lng) {

  selecteditem =  adapter.getItemAtPosition(i).toString();
   //or this can be also right: selecteditem = level[i];
} 
  @Override     
  public void onNothingSelected(AdapterView<?> parentView) 
{         

 }
  }); 

答案 2 :(得分:0)

    spinner3.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View v,
                int postion, long arg3) {
            // TODO Auto-generated method stub
        String  SpinerValue3 = parent.getItemAtPosition(postion).toString();

            Toast.makeText(getBaseContext(),
                    "You have selected 222 : " + SpinerValue3,
                    Toast.LENGTH_SHORT).show();

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });

答案 3 :(得分:0)

是的,您可以使用一些OnItemSelectedListener处理所选项目。但是有时候我们想处理微调器的精确点击。例如,隐藏键盘或发送一些分析数据等。在这种情况下,我们应该使用TouchListener,因为OnClickListener在Spinner上无法正常工作,并且您可能会出错。所以我建议像这样使用TouchListener

someSpinner.setOnTouchListener { _, event ->  onTouchSomeSpinner(event)}

fun onTouchSomeSpinner(event: MotionEvent): Boolean {
        if(event.action == MotionEvent.ACTION_UP) {
            view.hideKeyBoard()
            ...
        }
        return false
    }

答案 4 :(得分:-1)

你应该在监听器中使用它(OnItemSelectedListener)

public void onNothingSelected(AdapterView<?> arg0) {
}

没有它可能会有效但是要保持一致 但是也可能有其他错误,你能提供错误日志吗?