您的位置:首页 > 移动开发 > Android开发

Android 之 Spinner 键值对的绑定

2012-05-30 16:09 288 查看
很多时候我们会在下拉菜单中绑定一个值,但是 Spinner本身不提供这样的服务.

首先要定义一个Item类,有以下要注意的:

要重写它的.Tostring()函数,因为适配器在显示数据的时候,如果传入适配器的对象不是字符串的情况下,直接就使用对象.toString()

public class CItem {
private int ID;
private String Value = "";

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 里面代码如下:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mySpinner = (Spinner) findViewById(R.id.Spinner_mySpinner);

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Spinner android:id="@+id/Spinner_mySpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Spinner>

</LinearLayout>


运行结果如图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: