这里以Spinner为例
1.首先定义一个枚举类型:
public enum Language {
AUTO_DETECT(""),
AFRIKAANS("af"),
ALBANIAN("sq"),
AMHARIC("am"),
ARABIC("ar"),
ARMENIAN("hy"),
AZERBAIJANI("az"),
BASQUE("eu"),
BELARUSIAN("be"),
BENGALI("bn"),
BIHARI("bh"),
BULGARIAN("bg"),
BURMESE("my"),
CATALAN("ca"),
CHEROKEE("chr"),
CHINESE("zh"),
CHINESE_SIMPLIFIED("zh-CN"),
CHINESE_TRADITIONAL("zh-TW");
private String valueStr;
private Language(String valueStr) {
this.valueStr = valueStr;
}
//获取值
public String value() {
return valueStr;
}
}
注:必须创建构造函数
2.添加布局<Spinner
android:id="@+id/spinner1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_vertical_margin" />
3.添加数据源
//Spinner
Spinner mSpinner = (Spinner) findViewById(R.id.spinner1);
mSpinner.setAdapter(new ArrayAdapter<Language>(this, android.R.layout.simple_spinner_item, Language.values()));
mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View v,
int position, long id) {
Language chooseLang = (Language) parent.getItemAtPosition(position);
String show = "键:"+ chooseLang.name() + ", 值:" + chooseLang.value() + ", 下标:" + chooseLang.ordinal();
Toast.makeText(getBaseContext(), show, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {}
});
注:
Type.name() //获取枚举的名字,相当于键-值对的键;
Type.value() //定义枚举时自定义的方法value(),相当于获取键-值对的值;
Type.ordinal() //获取枚举所在的位置,相当于数组的下标,从0开始;
Type.values() //得到数据集合
Type.valueOf(String arg0) //根据值获取对象
4.稍微复杂一点,自己定义适配器,并显示枚举数据
private class MyListAdapter extends BaseAdapter{
@Override
public int getCount() {
return Language.values().length;<span style="white-space:pre"> </span>//大小
}
@Override
public Language getItem(int position) {
return Language.values()[position];<span style="white-space:pre"> </span>//返回枚举
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder mHolder = null;
if (convertView == null) {
mHolder = new ViewHolder();
convertView = LayoutInflater.from(getBaseContext()).inflate(R.layout.item_enum_data_list, null);<span style="white-space:pre"> </span>//item布局
mHolder.iv = (ImageView) convertView.findViewById(R.id.item_imv);
mHolder.tv = (TextView) convertView.findViewById(R.id.item_tv);
convertView.setTag(mHolder);
}else {
mHolder = (ViewHolder) convertView.getTag();
}
Language lang = Language.values()[position];
mHolder.tv.setText(lang.name());
return convertView;
}
class ViewHolder{
ImageView iv;
TextView tv;
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<ImageView
android:id="@+id/item_imv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/exclamation" />
<TextView
android:id="@+id/item_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/activity_vertical_margin"
android:text="TextView" />
</LinearLayout>
5.效果(无图。。(-。-;))