Android中spinner实现key、value功能

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自定义动态数据SimpleAdapter
下一篇android利用service实现下载apk自动更新功能
想对作者说点什么? 我来说一句

android Spinner value值与text值

2015年09月09日 825KB 下载

没有更多推荐了,返回首页

关闭
关闭