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

在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();

阅读更多
换一批

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