• 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

  • 相关阅读:
    053-146
    053-659
    053-658
    053-657
    053-656
    053-654
    053-655
    053-652
    053-651
    053-650
  • 原文地址:https://www.cnblogs.com/seely/p/4272683.html
Copyright © 2020-2023  润新知