上传Spinner填充数据对应代码

使用CodeArrayAdapter实现Spinner文本与代码对应
本文介绍如何通过CodeArrayAdapter类实现在Spinner中显示文本信息并对应保存为代码,包括创建泛型CodeBean类、构建数据源、加载数据及获取选择项对应的代码。适用于需要将较长文本信息与代码进行映射的应用场景。

有时候Spinner空间显示的较长的文本信息,但是保存到后台的是对应的一个代码。这个时候需要做好文本信息和代码的对应。使用二维数组作为数据源使用ArrayAdapter来加载。

1、新建CodeArrayAdapter

public class CodeArrayAdapter<T extends CodeBean> extends ArrayAdapter<T> {

    /**
     * 构造函数
     * 
     * @param context
     * @param textViewResourceId
     * @param objects
     */
    public CodeArrayAdapter(Context context, int textViewResourceId, T[] objects) {
        super(context, textViewResourceId, objects);
    }

    /**
     * 根据编码获取position
     * 
     * @param code
     * @return
     */
    public int getPositionByCode(String code) {
        for (int i = 0; i < getCount(); i++) {
            CodeBean item = (CodeBean) getItem(i);
            if (item.getCode().equals(code))
                return i;
        }
        return -1;
    }

    /**
     * 根据名称获取position
     * 
     * @param mc
     * @return
     */
    public int getPositoinByMC(String mc) {
        for (int i = 0; i < getCount(); i++) {
            CodeBean item = (CodeBean) getItem(i);
            if (item.getMC().equals(mc))
                return i;
        }
        return -1;
    }
}

2、泛型CodeBean

public class CodeBean implements Serializable{

private static final long serialVersionUID = -7060210544600464481L; 

    public static final String TAG="CodeBean";

    /*
     * added by zhaosong on 2013.07.02
     */
    public  CodeBean(String c,String mc)
    {
        code=c;
        MC=mc;
    }

    public CodeBean()
    {

    }
    private String code; //代码
    private String MC; //名称

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMC() {
        return MC;
    }

    public void setMC(String mC) {
        MC = mC;
    }
//增加空值处理,有数据是用分号分隔,否则显示为空
    public String toString() {
        if(code.compareTo("")!=0)
            return MC;
        else
            return "";
    }
}

3、建立数据源

public class Housedata {
    /**
     *  房屋性质 codebean
     */
    public static CodeBean[] Lease_state = new CodeBean[]{ 
         new CodeBean("1",  "非出租屋"),
         new CodeBean("2",  "出租"), 
         new CodeBean("3",  "待租"),        
    };      
}

2、加载数据

spLeaseState = (Spinner) findViewById(R.id.Spinner_state);
CodeArrayAdapter<CodeBean> adapter = new CodeArrayAdapter<CodeBean>(MainActivity.this, android.R.layout.simple_spinner_item,Housedata.Lease_state);
spLeaseState.setAdapter(adapter); //加载数据
spLeaseState.setSelection(0);// 默认

3、获取选择的文本对应的代码

((CodeBean) spLeaseState.getItemAtPosition(spLeaseState
                .getSelectedItemPosition())).getCode()
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值