zoukankan      html  css  js  c++  java
  • Android 之 Spinner 键值对的绑定

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

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

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

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

    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 里面代码如下:

    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:

    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.163.com/fjshqhy_2003/blog/static/140268782010989384539/

    仅在此记录下,方便查阅

  • 相关阅读:
    写给QA/软件测试新人
    互联网产品线上故障管理规范
    爬了世纪佳缘后发现了一个秘密,世纪佳缘找对象靠谱吗?
    网传美团今年应届生年薪 35w+,严重倒挂老员工,为什么互联网大厂校招的薪资一年比一年高?...
    MySQL大表优化方案
    步入AI领域2年连升3级,我只是找对了学习方法而已……
    BZOJ 4008 亚瑟王(概率DP 奥妙重重)
    BZOJ 4318 OSU! (概率DP)
    BZOJ 3812 主旋律 (状压DP+容斥) + NOIP模拟赛 巨神兵(obelisk)(状压DP)
    BZOJ 4145 [AMPPZ2014]The Prices (状压DP)
  • 原文地址:https://www.cnblogs.com/xingmeng/p/2474947.html
Copyright © 2011-2022 走看看