很多时候我们会在下拉菜单中绑定一个值,但是 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

最新文章

  1. Max double slice sum 的解法
  2. 在tomcat中配置jdk的不同版本
  3. Codeforces Round #383 (Div. 2) D. Arpa&#39;s weak amphitheater and Mehrdad&#39;s valuable Hoses(分组背包+dsu)
  4. 对Java Serializable(序列化)的理解和总结
  5. List集合中的对象根据属性排序
  6. Docker安装及基本使用方法
  7. 封装insertAfter、addClass、格式化时间
  8. 指定URL,计算文件大小
  9. ASP.NET MVC and jqGrid 学习笔记 5-添加数据
  10. 解决ie8下h5元素兼容性的问题
  11. (python)leetcode刷题笔记03 Longest Substring Without Repeating Characters
  12. HUST 1583 长度单位
  13. LeetCode算法题-Rotate String(Java实现)
  14. Laravel 深入理解路由和URL生成
  15. 脚本一键部署lnmp
  16. python 3.5下安装pycrypto
  17. (三)使用CXF开发WebService客户端
  18. spring根据name或者id获取实例
  19. POJ 3041&amp;&amp;3020
  20. js的let语句在安卓手机端的QQ浏览器出错的问题

热门文章

  1. 20145214 《Java程序设计》第9周学习总结
  2. 往Matlab中添加工具包
  3. autoCAD 2008 Win7 64位, win8 64位 安装 燕秀工具箱 yanxiu.cui 文件下载
  4. Qt在VS(Visual Studio)中使用
  5. CentOS/Linux 开放80、8080端口或者开放某个端口
  6. 【Docker 命令】- attach命令
  7. JavaScript中setInterval常见的问题(setInterval第一个参数加引号与不加引号区别)
  8. Android 多屏幕适配 dp和px的关系 最好用dp
  9. Delphi Dataset CurValue
  10. JDK各个版本比较 JDK5~JDK9