SSforME  

 

     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代替数组来动态添加。

posted on 2013-05-27 15:38  SSforME  阅读(6066)  评论(0编辑  收藏  举报