Spinner在android中通常用来实现下拉列表,但可惜的是Spinner没有直接实现类似text-value这样的自动绑定功能。某些情况下,列表展示的文本并不是我们想要取得的值,这样就需要手动实现数据绑定。首先用2个数组来分别表示显示的文本和要取的值,代码如下:
private final static String[] texts = {"张三", "李四", "王五"}; private final static int[] values = {1, 2, 3}; private Spinner spinner; private ArrayAdapter<String> adapter;
这里texts是下拉列表中显示的文本,values是根据列表选定后指定的值。接着就是实现Spinner了,代码如下:
spinner = (Spinner)findViewById(R.id.spinner); //绑定要显示的texts adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, texts); //设置下拉列表的风格
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(new SpinnerSelectedListener()); spinner.setVisibility(View.VISIBLE); class SpinnerSelectedListener implements OnItemSelectedListener{ public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { //利用数组中的对应位置取得values中需要的值 int Id = values[arg2]; } } }
另外,也可以用spinner.getSelectedItem().toString()来取得选定的文本,或者用spinner.getSelectedItemPosition()来取得选定文本的位置,从而可以用values[spinner.getSelectedItemPosition()]来取得对应的值。
如果你的列表数据是动态获得的。可以使用ArrayList代替数组来动态添加。