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

被折叠的 条评论
为什么被折叠?



