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

来源:互联网 发布:java 8 future 超时 编辑:程序博客网 时间:2024/05/19 18:15
spinner绑定数据源可以是.xml文件绑定,也可以是字符串数组绑定,但是我在网上找到的都是只能单个字符串拉上去,没有可以自定义的ID来识别;

这让很多的事情都不好办,比如说从数据库中提取的ID和String,不能自动的绑定上去

为了实现在android的spinner实现取VALUE值和TEXT值,我尝试过好些办法,在网上查的资料,都是说修改适配器,刚开始我也是通过修改适配器的方法来做的,但是如果一个activity有多个spinner,就需要多声明几个适配器的全局变量。后面查看适配器的源码发现,其实没有必要修改适配器,直接往适配器里面传对象,然后重写对象的toString()方法就可以简单解决。闲话少说,贴代码:

先声明一个对象,并重写对象的toString()。

public class CItem {

 private String ID = "";
 private String Value = "";

 public CItem () {
  ID = "";
  Value = "";
 }

 public CItem (String _ID, String _Value) {
  ID = _ID;
  Value = _Value;
 }

 @Override
 public String toString() {           //为什么要重写toString()呢?因为适配器在显示数据的时候,如果传入适配器的对象不是字符串的情况下,直接就使用对象.toString()
  // TODO Auto-generated method stub
  return Value;
 }

 public String GetID() {
  return ID;
 }

 public String GetValue() {
  return Value;
 }
}

 

然后声明对象实例并加入到arraylist里面,并设置spinner的适配器

Spinner Sp = (Spinner).............//

List<CItem > lst = new ArrayList<CItem>();

CItem  ct = new CItem ("1","测试");

lst.Add(ct);;

ArrayAdapter<CItem > Adapter = new ArrayAdapter<CItem>(context,
    android.R.layout.simple_spinner_item, lst);

Sp.SetAdapter(Adapter);

 

取值:

如果取TEXT值则可以直接取:Sp.getSelectedItem.ToString()或者:((CItem)Sp.getSelectedItem). GetValue() ;

如果去Value值则可以这样取:((CItem)Sp.getSelectedItem).GetID();


以上方法来自于http://blog.163.com/fjshqhy_2003/blog/static/140268782010989384539/

原创粉丝点击