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

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

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

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

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

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

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. </LinearLayout>

运行结果如图:

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

Android 之 Spinner 键值对的绑定(转)的更多相关文章

  1. android 绑定spinner键值对显示内存地址的问题

    初学android,估计是.net学傻了,觉得android好麻烦. 绑定下拉菜单Spinner键值对. 参照这篇文章,地址:http://blog.csdn.net/shouliang52000/a ...

  2. 枚举类返回Map键值对,绑定到下拉框

    有时候,页面的下拉框要显示键值对,但是不想从数据库取,此时我们可以写一个枚举类, Java后台代码 1.枚举类 import java.util.HashMap; import java.util.M ...

  3. android中的键值对

    hashmap,contentvalue,namevaluepair,jsonobject ArrayList和HashMap的区别:内部元素:ArrayList储存的是单个对象(此对象是可以通过设置 ...

  4. Android Spinner 绑定键值对

    这里给大家提供下绑定 spinner键值对的方法. 首先创建绑定模型BaseItem public class BaseItem { public BaseItem(Integer id,String ...

  5. Android下添加新的自定义键值和按键处理流程

            Android下添加新的自定义键值和按键处理流程     说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我 ...

  6. Android下添加新的自定义键值和按键处理流程【转】

    本文转载自: Android下添加新的自定义键值和按键处理流程     说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我一 ...

  7. Android4.0 添加一个新的Android 键值

    这里添加新的键值,不是毫无凭据凭空创造的一个键值,而是根据kernel中检测到的按键值,然后转化为Android所需要的数值: 以添加一个Linux键值为217,把它映射为android的键值Brow ...

  8. 在android的spinner中,实现取VALUE值和TEXT值。 ZT

    在android的spinner中,实现取VALUE值和TEXT值.   为了实现在android的 spinner实现取VALUE值和TEXT值,我尝试过好些办法,在网上查的资料,都是说修改适配器, ...

  9. 在android的spinner中,实现取VALUE值和TEXT值

    为了实现在android的spinner实现取VALUE值和TEXT值,我尝试过好些办法,在网上查的资料,都是说修改适配器,刚开始我也是通过修改适配器的方法来做的,但是如果一个activity有多个s ...

随机推荐

  1. 使用truffle测试部署合约

    truffle console let contract; contract=BloggerCoin.deployed().then(instance=>contract=instanc e);

  2. 定点数(fixed-point number)

    定义 定点数(fixed-point number)就是小数点位置固定的数,也就是说,小数点后面的位数是固定的,比如要记录一笔账目,这些账目的数字都不会超过100,就可以使用2位小数位定点数来记录,比 ...

  3. 迭代器类型:iterator & const_iterator

    vector<int> ivec{1, 3, 4, 1, 3, 4}; vector<int>::iterator iter; // iter能读写vector<int& ...

  4. 20172333 2017-2018-2 《Java程序设计》第10周学习总结

    20172333 2017-2018-2 <Java程序设计>第10周学习总结 教材学习内容 第十三章 集合是一个对象,一个保存其他对象的数据库. 集合可以保存不同种类的对象也可以保存同种 ...

  5. ASP.NET 最全的POST提交数据和接收数据 —— (1) 用url传参方式

    //1.对象提交,字典方式 //接口方:public ActionResult GetArry(Car model) public void PostResponse() { HttpWebReque ...

  6. MySQL加密算法

    1.不可逆加密: PASSWORD(),ENCRYPT(,),MD5(),SHA5(). 2.可逆的加密算法: ENCODE(,)   DECODE(,):加密解密字符串.该函数有两个参数:被加密或解 ...

  7. java数据结构-HashMap

    一直以来似乎都有一个错觉,认为map跟其他的集合类一样继承自Collection,其实不然,Map和Collection在结构层次上是没有任何关系的,通过查看源码可以发现map所有操作都是基于key- ...

  8. [OS] 生产者-消费者问题(有限缓冲问题)

    ·最简单的情形--(一个生产者 + 一个消费者 + 一个大小为1的有限缓冲) 首先来分析其中的同步关系: ·必须在生产者放入一个产品之后,消费者才能够从缓冲中取出产品来消费.·只有在消费者从缓冲区中取 ...

  9. Prepare方法和UnPrepare方法

    Query组件提供的Prepare方法的作用是通知BDE或数据库服务器优化并准备执行SQL操作.Query的Prepare方法能优化执行的原因在于该方法是是在SQL语句执行前就对其进行分析.检查和编译 ...

  10. HUAS 1476 不等数列(DP)

    考虑DP. 如果把转移看出当前位填什么数的话,这样是有后效性的. 如果考虑当前的序列是将1至n依次插入序列中的话. 考虑将i插入1到i-1的序列中,如果插入到<号中或者首部,那么最后就会多出一个 ...