spinner和适配器模式

spinner相当于html表单中的select下拉列表。

------------
|第一种方式|
------------
在string.xml中添加一个数组spinner_data:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="spinner_data">
<item >北京</item>
<item >湖南</item>
<item >湖北</item>
</string-array>
</resources>

拖拽一个spinner:
<Spinner
android:id="@+id/spinner1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/spinner_data"
android:spinnerMode="dialog"

/>

<!-- entries 显示spinner当中的数据项
spinnerMode="dropdown"是默认值下拉列表,spinnerMode="dialog"是以对话框的形式显示--!>
------------
|第二种方式|
------------
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



}


});

--------------------------------------------------------------------------------------------------------------

 

posted @ 2014-09-20 16:11  cymin  阅读(1130)  评论(0编辑  收藏  举报