Spinnner 的 setOnItemClickListener异常

来源:互联网 发布:贴吧抢楼软件安卓 编辑:程序博客网 时间:2024/05/17 13:09

发现自己定义一个Spinner ,以为对项目的点击是用setOnItemClickListener。后来发现程序运行之后根本跑不了。

只能用setOnItemSelectListener。

public class MainActivity extends Activity {private Spinner mSpinner;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mSpinner = (Spinner) findViewById(R.id.spinner1);String[] city = this.getResources().getStringArray(R.array.city);ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,city);mSpinner.setAdapter(adapter);/***这一段代码加上,就运行不了了mSpinner.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {// TODO Auto-generated method stubString str=parent.getItemAtPosition(position).toString();Toast.makeText(MainActivity.this, "你点击的是:"+str, Toast.LENGTH_SHORT).show();}});   */mSpinner.setOnItemSelectedListener(new OnItemSelectedListener(){@Overridepublic void onItemSelected(AdapterView<?> parent, View view,int position, long id) {// TODO Auto-generated method stubString str = parent.getItemAtPosition(position).toString();Toast.makeText(MainActivity.this, "你点击的是"+str, Toast.LENGTH_SHORT).show();;}@Overridepublic void onNothingSelected(AdapterView<?> parent) {// TODO Auto-generated method stub}});;}}
查一下源码就发现是这样的

 @Override    public void setOnItemClickListener(OnItemClickListener l) {        throw new RuntimeException("setOnItemClickListener cannot be used with a spinner.");    }

说明系统根本不让spinner是用setOnItemClickListener

这个方法目前是不可用的,
同样不可用的还有 setOnClickListener。
setOnTouchListener,方法仅仅是在控件被触摸的时候调用,而条目的点击事件却无法触发。
因此,目前能得到条目数据的只有 setOnItemSelectedListener。虽然不够灵活,但勉强够用。

新手笔记,还望高手指点~~

0 0