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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值