Android中spinner实现key、value功能

原创 2014年07月03日 11:08:23

android中的spinner控件和html中的select标签比较相似,我们都知道select标签中每个选项都可以设置key值和value值,key值用于显示,value值为实际取值,但是在android的spinner控件中没有这个功能的直接实现,实际上android的spinner功能更加强大,只是需要我们去稍作修改,spinner的每个选项都可以是一个对象,显示什么值取什么值都是我们自己控制的,我们选择的也就可以是一个复杂的数据内容,而不像select一样只是一个简单的字符串。有适配器在显示与数据之间建立了一个桥梁,所以显示与取值都是由这个适配器控制的,getView'就是控制你要显示的内容,getItem就是获取选择的对象。如果你不想自定义适配器,那么就自定义对象,我们给spinner常用的适配器就是ArrayAdapter,可以看到ArrayAdapter中的实现就是判断传入对象是否是字符串如果是字符串直接显示,如果不是就转化为字符串显示,这样就好了,我们自定义的对象中只要重写toString()方法,这个值就是要显示的内容,要实现key、value的功能就自定义如下的对象

<pre name="code" class="java">public class KeyValue {
	private String key;
	private String value;
	
	
	public KeyValue() {
		super();
	}
	public KeyValue(String key, String value) {
		super();
		this.key = key;
		this.value = value;
	}
	
	/**
	 * @return the key
	 */
	public String getKey() {
		return key;
	}
	/**
	 * @param key the key to set
	 */
	public void setKey(String key) {
		this.key = key;
	}
	/**
	 * @return the value
	 */
	public String getValue() {
		return value;
	}
	/**
	 * @param value the value to set
	 */
	public void setValue(String value) {
		this.value = value;
	}
        //这里是关键,spinner选项中显示什么值就看这个方法怎么实现
	@Override
	public String toString() {
		return key==null?"":key.toString();
	}
	
}

使用的时候如下

private static KeyValue[] taskStatus = new NameValue[2]
static{
      taskStatus[0]=new NameValue("完成","finish");
      taskStatus[1]=new NameValue("驳回","reject");
      }
Spinner taskStatusSpinner = (Spinner) view.findViewById(R.id.task_status);
ArrayAdapter<NameValue> adapter = new ArrayAdapter<NameValue>(this,taskStatus);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
taskStatusSpinner.setAdapter(adapter);

取值的时候可以这样取

KeyValue taskStatus = (KeyValue) taskStatusSpinner.getSelectedItem();
String value = taskStatus.getValue()
这样页面显示的就是完成和驳回,取到的值就是"finish"或者"reject"了

本人初学android,因为一个项目中大量用到了这样的功能,所以想到了这个方法,不知道有没有更好的办法,欢迎大神指导。

相关文章推荐

在android的spinner中,实现key(id)和Value的取值

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

android开发步步为营之23:Spinner进阶绑定包含key和value的对象

Spinner一般绑定字符串数组就可以了,比如之前 的做法 ArrayAdapter adapter = ArrayAdapter.createFromResource(               ...

在android的spinner中,实现取VALUE值和ID值

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

android Spinner value值与text值

  • 2015年09月09日 09:31
  • 825KB
  • 下载

Android开发系列(二十一):Spinner的功能和用法以及实现列表选择框

Spinner实现下拉列表框

自己实现基于key-value的NoSQL数据库(四)—— 新版本的数据库

基于上一章的内容,我们需要把key替换成hash值存储到b+tree中 首先要改变的就是set和get函数 template int smallsql::getType() { return...

key-value数据库的一种实现

NoSQL,指的是非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以...

400行代码实现本地Key-Value缓存,性能每秒几百万次,进程重启有效,LRU淘汰——HashTable

liuyun827@foxmail.com原创,转载请注明出处:http://blog.csdn.net/gdutliuyun827 Key-Value缓存有很多,用的较多的是memcache、re...

key-value 多线程服务器的Linux C++实现

项目需求 总体思路 网络通信 字符解析 数据存储与查询 1 存储管理 2 数据查询 多线程 待改进 GitHub源码项目需求 设计一个基于Socket或基于HTTP的服务器,服务内容是提供一种简单...

一个简单的Key-Value小数据库tmdb的原理和实现

一个简单的Key-Value小数据库tmdb的原理和实现 1 基本特点 ey-Value 数据库是很早起比较典型的老式数据库,从Unix早期的dbm,后来的GNU版本的gdbm,还...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android中spinner实现key、value功能
举报原因:
原因补充:

(最多只允许输入30个字)