android 下拉选择框Spinner

来源:互联网 发布:淘宝详情页图片下载器 编辑:程序博客网 时间:2024/05/16 16:55

建立Spinner的适配器

[java] view plain copy
  1. public class SpinnerAdapter extends BaseAdapter{  
  2.   
  3.     private Context mContext;  
  4.     private Map<String, String> ports;  
  5.     private List<String> keys = new ArrayList<String>();  
  6.     public SpinnerAdapter(Context _mContext,Map<String, String> _ports)  
  7.     {  
  8.         mContext = _mContext;  
  9.         ports = _ports;       
  10.         for (String str : _ports.keySet()) {// 遍历set去出里面的的Key  
  11.             keys.add(str);  
  12.         }  
  13.     }  
  14.       
  15.     @Override  
  16.     public int getCount() {  
  17.         // TODO Auto-generated method stub  
  18.         return keys.size();  
  19.     }  
  20.   
  21.     @Override  
  22.     public Object getItem(int position) { //一般是得到key,id用于后台交互  
  23.         // TODO Auto-generated method stub  
  24.         return keys.get(position);  
  25.     }  
  26.   
  27.     @Override  
  28.     public long getItemId(int position) {  
  29.         // TODO Auto-generated method stub  
  30.         return position;  
  31.     }  
  32.   
  33.     @Override  
  34.     public View getView(int position, View convertView, ViewGroup parent) {  
  35.                   
  36.         LayoutInflater _LayoutInflater=LayoutInflater.from(mContext);  
  37.         convertView=_LayoutInflater.inflate(R.layout.tran_spinner_item, null);  
  38.         if(convertView!=null)  
  39.         {  
  40.             TextView _TextView1=(TextView)convertView.findViewById(R.id.ports_name);  
  41.             TextView _TextView2=(TextView)convertView.findViewById(R.id.ports_id);  
  42.             _TextView1.setText(ports.get(keys.get(position)));  
  43.             _TextView2.setText(keys.get(position));  
  44.         }  
  45.         return convertView;  
  46.     }     
  47.       
  48.     /** 
  49.      * 根据值, 设置spinner默认选中: 
  50.      * @param spinner 
  51.      * @param value 
  52.      */  
  53.     public static void setSpinnerItemSelectedByValue(Spinner spinner,String value){  
  54.         SpinnerAdapter apsAdapter= (SpinnerAdapter) spinner.getAdapter(); //得到SpinnerAdapter对象  
  55.         int k= apsAdapter.getCount();  
  56.         for(int i=0;i<k;i++){  
  57.             if(value.equals(apsAdapter.getItemValue(i))){  
  58.                 spinner.setSelection(i,true);// 默认选中项  
  59.                 break;  
  60.             }  
  61.         }  
  62.     }   
  63.       
  64.     public String getItemValue(int position)  
  65.     {  
  66.         return ports.get(keys.get(position));  
  67.     }  
  68. }  

tran_spinner_item  layout

[java] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical" >  
  6.       
  7.     <TextView  
  8.             android:id="@+id/ports_name"  
  9.             android:layout_width="wrap_content"  
  10.             android:layout_height="match_parent"  
  11.             android:textSize="20sp" />  
  12.     <TextView  
  13.             android:id="@+id/ports_id"  
  14.             android:layout_width="wrap_content"  
  15.             android:layout_height="match_parent"  
  16.             android:visibility="gone"/>  
  17. </LinearLayout>  

生成spinner

[java] view plain copy
  1. private void createSpinner(Activity _mActivity,TableRow tr,TableItemNameValueShrink tt)  
  2.     {  
  3.         TableRow.LayoutParams trlpfe = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,  
  4.                 TableRow.LayoutParams.WRAP_CONTENT);  
  5.         trlpfe.setMargins(0900);  
  6.         Spinner sp = new Spinner(_mActivity);  
  7.         sp.setLayoutParams(trlpfe);  
  8.                   
  9.         SpinnerAdapter _MyAdapter=new SpinnerAdapter(_mActivity, portsmap);  
  10.         //绑定Adapter  
  11.         sp.setAdapter(_MyAdapter);  
  12.         SpinnerAdapter.setSpinnerItemSelectedByValue(sp,tt.value.toString());  
  13.         tr.addView(sp);   
  14.     }  


http://www.open-open.com/lib/view/open1330651497624.html


http://blog.csdn.net/ailiandeziwei/article/details/9164219


http://www.oschina.net/question/54100_33274  


选中默认值

[java] view plain copy
  1. public static void setSpinnerItemSelectedByValue(Spinner spinner,String value){  
  2.         SpinnerAdapter apsAdapter= (SpinnerAdapter) spinner.getAdapter(); //得到SpinnerAdapter对象  
  3.         int k= apsAdapter.getCount();  
  4.         for(int i=0;i<k;i++){  
  5.             if(value.equals(apsAdapter.getItemValue(i))){  
  6.                 spinner.setSelection(i,true);// 默认选中项  
  7.                 break;  
  8.             }  
  9.         }  
  10.     }   
  11.       
  12.     public String getItemValue(int position)  
  13.     {  
  14.         return ports.get(keys.get(position));  
  15.     }  

http://www.cnblogs.com/over140/archive/2010/09/25/1834469.html

http://bbs.csdn.net/topics/390597226

原创粉丝点击