Android 之 Spinner 键值对的绑定(转)

很多时候我们会在下拉菜单中绑定一个值,但是 Spinner本身不提供这样的服务

 

于是在网上找了N久,终于找到一个简单易用的方案;废话不多说,直接上菜了

 

首先要定义一个Item类,有以下要注意的:

    要重写它的.Tostring()函数,因为适配器在显示数据的时候,如果传入适配器的对象不是字符串的情况下,直接就使用对象.toString()

 

 

 

[java] view plaincopy
 
  1. public class CItem {  
  2.     private int ID;  
  3.     private String Value = "";  
  4.   
  5.     public CItem() {  
  6.         ID = 0;  
  7.         Value = "";  
  8.     }  
  9.   
  10.     public CItem(int _ID, String _Value) {  
  11.         ID = _ID;  
  12.         Value = _Value;  
  13.     }  
  14.   
  15.     @Override  
  16.     public String toString() {  
  17.         // 为什么要重写toString()呢?因为适配器在显示数据的时候,如果传入适配器的对象不是字符串的情况下,直接就使用对象.toString()  
  18.         // TODO Auto-generated method stub  
  19.         return Value;  
  20.     }  
  21.   
  22.     public int GetID() {  
  23.         return ID;  
  24.     }  
  25.   
  26.     public String GetValue() {  
  27.         return Value;  
  28.     }  
  29. }  

 

 

 

在onCreate 里面代码如下:

 

[java] view plaincopy
 
  1. public void onCreate(Bundle savedInstanceState) {  
  2.     super.onCreate(savedInstanceState);  
  3.     setContentView(R.layout.main);  
  4.     mySpinner = (Spinner) findViewById(R.id.Spinner_mySpinner);  
  5.   
  6.     List<CItem> lst = new ArrayList<CItem>();  
  7.     for (int i = 0; i < 10; i++) {  
  8.         /* 
  9.          * 首先新建一个list,赋值 
  10.          * ID为序号 
  11.          */  
  12.         CItem item = new CItem(i, "value of " + i);  
  13.         lst.add(item);  
  14.     }  
  15.     ArrayAdapter<CItem> myaAdapter = new ArrayAdapter<CItem>(this, android.R.layout.simple_spinner_item, lst);  
  16.     mySpinner.setAdapter(myaAdapter);  
  17.   
  18.     mySpinner.setOnItemSelectedListener(new OnItemSelectedListener() {  
  19.         public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {  
  20.             /* 
  21.              * ids是刚刚新建的list里面的ID 
  22.              */  
  23.             int ids = ((CItem) mySpinner.getSelectedItem()).GetID();  
  24.             System.out.println(ids);  
  25.             Toast.makeText(getApplicationContext(), String.valueOf(ids), Toast.LENGTH_LONG).show();  
  26.         }  
  27.   
  28.         @Override  
  29.         public void onNothingSelected(AdapterView<?> arg0) {  
  30.             // TODO Auto-generated method stub  
  31.               
  32.         }  
  33.     });  
  34.   
  35. }  

 

 

 

 

main.xml:

 

 

[java] view plaincopy
 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7.     <Spinner android:id="@+id/Spinner_mySpinner"   
  8.     android:layout_width="wrap_content"   
  9.     android:layout_height="wrap_content"></Spinner>  
  10.   
  11. </LinearLayout>  

 

 

 

运行结果如图:

 

以上方法出自于:http://blog.csdn.net/zhangmengxiong/article/details/6291706

posted @ 2015-02-04 16:23  hmf  阅读(355)  评论(0编辑  收藏  举报