原文 http://www.cnblogs.com/UUUP/p/3983394.html
spinner相当于html表单中的select下拉列表。
第一种方式¶
在string.xml中添加一个数组spinner_data:
拖拽一个spinner:
第二种方式¶
BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView、Spinner、Gallery、GridView等UI显示组件,它是自动继承接口类Adapter。
假如要往spinner中添加string[]或List。
a)string[]
在MainActivity主类中定义一个字符串数组:
private String[] str = new String[] {
"山东","山西","北京"
};
定义一个继承BaseAdapter的类:
private class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
// TODO Auto-generated method stub
return str.length;//重要方法
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View view, ViewGroup group) {//重要方法
// TODO Auto-generated method stub
//str.length多长此方法就执行几次
TextView textView = new TextView(MainActivity.this);
textView.setText(str[position]);
return textView;
}
}
在onCreate方法中:
Spinner spinner = (Spinner) findViewById(R.id.spinner1);
spinner.setAdapter(new MyAdapter());
b)List
在MainActivity主类中定义一个List:
private List list = new ArrayList();
并在onCreate方法中添加内容:
list.add("上海");
list.add("天津");
list.add("浙江");
MyAdapter类则只需要修改几处即可:
1. public int getCount() {
return list.size();
}
2. public View getView(int position, View view, ViewGroup group) {
TextView textView = new TextView(MainActivity.this);
textView.setText((CharSequence) list.get(position));
return textView;
}
3.还可以继续给spinner添加事件OnItemSelectedListener:
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, (CharSequence) list.get(position), 0).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});