Spinner的定义和获取选中的值有很多种方式。

首先是定义适配器的三种方式:
 
1:使用数组资源, 然后在布局文件里面直接引用
 android:entries="@array/city_datas"
2:使用数组资源,但是是在代码里面去获取数组资源,配合数组适配器使用
 
有两个spinner相关联的时候,用到数组。
 
 
  
  1. int[] city_datas = new int[]{ 
  2.         R.array.city_01, 
  3.         R.array.city_02, 
  4.         R.array.city_03, 
  5.         R.array.city_04, 
  6.         R.array.city_05, 
  7.         R.array.city_06, 
  8.         R.array.city_07, 
  9.         R.array.city_08 
  10.     }; 
具体用法:
 
 
  
  1. ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this
  2.            R.array.myfruits//单个 
  3.            , android.R.layout.simple_spinner_item); 
  4.     // Specify the layout to use when the list of choices appears 
  5.     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
  6.     // Apply the adapter to the spinner 
  7.     sp3.setAdapter(adapter); 
3: 直接在代码里面 创建数据, 使用数组适配器(ArrayAdapter)来创建
cur_citys给定的数组元素。
 
 
 
  
  1. ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(SpinnerActivity.this,android.R.layout.simple_list_item_1, cur_citys); 
   adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 
4:使用BaseAdapter 来创建自定义的下拉列表中的每一个条目
 
 
  
  1. private  class MyBaseAdapter extends BaseAdapter{ 
  2.              //上下文 
  3.             Context  context; 
  4.             public MyBaseAdapter(Context context){ 
  5.                 this.context=context; 
  6.             } 
  7.             //数据的数量 
  8.             @Override 
  9.             public int getCount() { 
  10.                 return city_datas.length; 
  11.             } 
  12.  
  13.             //获取到这个条目 
  14.             @Override 
  15.             public Object getItem(int position) { 
  16.                 // TODO Auto-generated method stub 
  17.                 return city_datas[position]; 
  18.             } 
  19.  
  20.             //获取到当前条目的id 
  21.             @Override 
  22.             public long getItemId(int position) { 
  23.                 // TODO Auto-generated method stub 
  24.                 return position; 
  25.             } 
  26.  
  27.            //返回一个视图 
  28.             @Override 
  29.             public View getView(int position, View convertView, ViewGroup parent) { 
  30.                 LinearLayout layout=new LinearLayout(context); 
  31.                 LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 
  32.                         ViewGroup.LayoutParams.FILL_PARENT); 
  33.                 layout.setOrientation(LinearLayout.HORIZONTAL); 
  34.                 LinearLayout.LayoutParams params2=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 
  35.                         ViewGroup.LayoutParams.WRAP_CONTENT); 
  36.                  
  37.                 TextView  textView=new TextView(context); 
  38.                 textView.setText(this.getItem(position).toString()); 
  39.                  
  40.                 ImageView iamge=new ImageView(context); 
  41.                 iamge.setImageResource(R.drawable.icon); 
  42.                 layout.addView(textView, params2); 
  43.                 layout.addView(iamge, params2); 
  44.                 return layout; 
  45.             } 
  46.            
  47.         } 
 
获取选中的值:
Spinner的监听事件:
 
 
  
  1. sp2.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() { 
  2.  
  3.             @Override 
  4.             public void onItemSelected(AdapterView<?> parent, View view, 
  5.                     int position, long id) { 
  6.                  
  7.             } 
  8.  
  9.             @Override 
  10.             public void onNothingSelected(AdapterView<?> arg0) { 
  11.                 // TODO Auto-generated method stub 
  12.                  
  13.             } 
  14.         }); 
1.对应上面的2和3:
通过position取得对应数组里的值。
2.通过取得spinner当前的postion获得值:
 
 
  
  1. sp2.getItemAtPosition(position).toString() 
3.直接获取选中条目的内容:
 
 
  
  1. sp2.getSelectedItem().toString()