很多时候我们会在下拉菜单中绑定一个值,但是 Spinner本身不提供这样的服务
于是在网上找了N久,终于找到一个简单易用的方案;废话不多说,直接上菜了
首先要定义一个Item类,有以下要注意的:
要重写它的.Tostring()函数,因为适配器在显示数据的时候,如果传入适配器的对象不是字符串的情况下,直接就使用对象.toString()
public CItem() {
ID = 0;
Value = "";
}
public CItem(int _ID, String _Value) {
ID = _ID;
Value = _Value;
}
@Override
public String toString() {
// 为什么要重写toString()呢?因为适配器在显示数据的时候,如果传入适配器的对象不是字符串的情况下,直接就使用对象.toString()
// TODO Auto-generated method stub
return Value;
}
public int GetID() {
return ID;
}
public String GetValue() {
return Value;
}
}
在onCreate 里面代码如下:
List<CItem> lst = new ArrayList<CItem>();
for (int i = 0; i < 10; i++) {
/*
* 首先新建一个list,赋值
* ID为序号
*/
CItem item = new CItem(i, "value of " + i);
lst.add(item);
}
ArrayAdapter<CItem> myaAdapter = new ArrayAdapter<CItem>(this, android.R.layout.simple_spinner_item, lst);
mySpinner.setAdapter(myaAdapter);
mySpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
/*
* ids是刚刚新建的list里面的ID
*/
int ids = ((CItem) mySpinner.getSelectedItem()).GetID();
System.out.println(ids);
Toast.makeText(getApplicationContext(), String.valueOf(ids), Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
main.xml:
</LinearLayout>
运行结果如图:
以上方法出自于:http://blog.163.com/fjshqhy_2003/blog/static/140268782010989384539/
仅在此记录下,方便查阅