很多时候我们会在下拉菜单中绑定一个值,但是 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. [转载]Java集合框架的常见面试题

    http://www.jfox.info/40-ge-java-ji-he-lei-mian-shi-ti-he-da-an 整理自上面链接: Java集合框架为Java编程语言的基础,也是Java面 ...

  2. Java面试知多少

    1.谈谈&和&&的区别  1.&&是短路判断,在与其他语句一起判断时,第一个条件为假就不判断剩下的条件:   & 需要判断所有的条件  2.&是 ...

  3. BZOJ 4557 JLOI2016 侦查守卫 树形dp

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4557 题意概述: 给出一棵树,每个点付出代价w[i]可以控制距离和它不超过d的点,现在给 ...

  4. 软件工程第六周psp

    1.psp表格 类别 任务 开始时间 结束时间 中断时间 delta时间 立会 讲技术文档,分配任务 10月20日16:17 10月20日16:50 0 33分钟 准备工作 根据任务查资料 10月20 ...

  5. lintcode-161-旋转图像

    161-旋转图像 给定一个N×N的二维矩阵表示图像,90度顺时针旋转图像. 样例 给出一个矩形[[1,2],[3,4]],90度顺时针旋转后,返回[[3,1],[4,2]] 挑战 能否在原地完成? 标 ...

  6. MVC4 DropDownList (二) — 省市联动

    1.添加省份和城市类 //省份 public class Province { public int Id { get; set; } public string Name { get; set; } ...

  7. 3ds max启动慢怎么办?

      有时候启动3ds max的时候一直卡在启动界面进不去怎么办?   在百度上搜到了下面这个解决方案,试了下还真有用:   具体就是进到这个文件夹,然后分别进入第一个和第三个文件夹删掉autodesk ...

  8. Python文件操作大全,随机删除文件夹内的任意文件

     在读文件的时候往往需要遍历文件夹,python的os.path包含了很多文件.文件夹操作的方法: os.path.abspath(path) #返回绝对路径os.path.basename(path ...

  9. 【转】log4j.properties文件的配置

    一.前言 log4j使用的还是比较多的,但是对于其配置又很难描述清楚要怎么配置,说明我自己对于log4j的配置并不是非常熟悉,所以在网上找了一篇详尽的 博文转载,在此非常感谢原文作者的辛苦付出,如有需 ...

  10. [剑指Offer] 62.二叉搜索树的第k个结点

    题目描述 给定一颗二叉搜索树,请找出其中的第k大的结点.例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4. [思路]遍历二叉搜索树,存入一个vector ...