在android的spinner中,实现取VALUE值和ID值
spinner绑定数据源可以是.xml文件绑定,也可以是字符串数组绑定,但是我在网上找到的都是只能单个字符串拉上去,没有可以自定义的ID来识别;
这让很多的事情都不好办,比如说从数据库中提取的ID和String,不能自动的绑定上去。
为了实现在android的spinner实现取VALUE值和TEXT值,我尝试过好些办法,在网上查的资料,都是说修改适配器,刚开始我也是通过修改适配器的方法来做的,但是如果一个activity有多个spinner,就需要多声明几个适配器的全局变量。后面查看适配器的源码发现,其实没有必要修改适配器,直接往适配器里面传对象,然后重写对象的toString()方法就可以简单解决。闲话少说,贴代码:
- 声明一个对象,并重写对象的toString()。
public class SpinnerItem {
private String ID = "";
private String Value = "";
public SpinnerItem() {
ID = "";
Value = "";
}
public SpinnerItem(String iD, String value) {
ID = iD;
Value = value;
}
@Override
public String toString() {
// 为什么要重写toString()呢?
// 因为适配器在显示数据的时候,
// 如果传入适配器的对象不是字符串的情况下,
// 直接就使用对象.toString()
return Value;
}
public String getID() {
return ID;
}
public void setID(String iD) {
ID = iD;
}
public String getValue() {
return Value;
}
public void setValue(String value) {
Value = value;
}
}
- 声明对象实例并加入到arraylist里面,并设置spinner的适配器
Spinner sp = (Spinner).............//
List<SpinnerItem> list = new ArrayList<SpinnerItem>();
SpinnerItem spinnerItem=new SpinnerItem("1", "测试数据1");
list.add(spinnerItem);
ArrayAdapter<SpinnerItem> adapter= new ArrayAdapter<SpinnerItem>(context,
android.R.layout.simple_spinner_item, list);
sp.setAdapter(adapter);
- 取值:
如果取TEXT值则可以直接取:sp.getSelectedItem().toString());
或者:((SpinnerItem)sp.getSelectedItem()). getValue() ;
如果去取Value值则可以这样取:((SpinnerItem)sp.getSelectedItem()).getID();