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,因为一个项目中大量用到了这样的功能,所以想到了这个方法,不知道有没有更好的办法,欢迎大神指导。

在Spinner塞入复杂对象,取其key值和value值的解决办法。

网上找的都是使用String[]或者ArrayList往Spinner里面塞数据,那假如是个复杂对象呢?比如:ArrayList 其实,很简单,重写Company的toString()就可以了; ...
  • gundumw100
  • gundumw100
  • 2017年04月10日 18:38
  • 222

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

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

具有多选功能的spinner自定义控件

概述当我们要做单选功能的时候,我们会很自然的想到Spinner,它可以在一个集合中选择一个我们需要的值。但是有时候我们需要在一个集合中选择多个值,这个时候Spinner就不能满足需求。此时可以根据自己...
  • yissan
  • yissan
  • 2015年10月26日 21:02
  • 4240

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

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

带有筛选功能的Spinner

Spinner下拉列表我们经常用到,一般我们在xml文件定义好,然后在代码中设置一下adapter即可。 ...
  • lue2009
  • lue2009
  • 2015年05月07日 16:45
  • 1706

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

Spinner一般绑定字符串数组就可以了,比如之前 的做法 ArrayAdapter adapter = ArrayAdapter.createFromResource(               ...
  • figo0423
  • figo0423
  • 2014年09月23日 21:40
  • 788

android Spinner value值与text值

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

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

Spinner实现下拉列表框
  • u010800530
  • u010800530
  • 2014年10月28日 19:14
  • 1782

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

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

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

基于上一章的内容,我们需要把key替换成hash值存储到b+tree中 首先要改变的就是set和get函数 template int smallsql::getType() { return...
  • UnSkyToo
  • UnSkyToo
  • 2015年06月21日 00:44
  • 1036
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android中spinner实现key、value功能
举报原因:
原因补充:

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