3.8 Spinner
【例】Spinner动态数据的绑定
(1)定义一个数组作为下拉列表的数据源
String[] classsName={"安卓1501","安卓1502","安卓1503","软件1501"}; (2)创建一个适配器
数组适配器参数:上下文,下拉列表的布局,显示在下拉列表的组件id,数据ArrayAdapter<String> adapter=new
ArrayAdapter<String>(MainActivity.this,android.R.layout.activity_list _item,android.1,classsName);
spn.setAdapter(adapter);
【例】选择自定义Teacher类为spinner数据源
(1)添加布局Item作为列表项的布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="schemas.android/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="8dip"
android:paddingTop="8dip"
android:text="TextView"
android:textSize="15sp" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="8dip"
android:drawableLeft="@drawable/username"
android:paddingTop="8dip"
android:text="TextView"
android:textSize="15sp" />
</LinearLayout>
(2)定义Teacher类
public class Teacher {
String id;
String name;
public Teacher(String id, String name) {
this.id = id;
this.name = name;
}
public String getName() {
return name;
}
public String getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public void setId(String id) {
this.id = id;
}
}
(3)定义适配器
适配器:就是把一些数据在View上显示。可以看作是界面数据绑定的一种理解。它
所操纵的数据一般都是一些比较复杂的数据,如数组,链表,数据库,集合等。
适配器的作用主要是用来给诸如(Spinner、ListView、GridView)来填充数据
1)BaseAdapter
最常用的适配器,它是一个抽象类,使用该适配器需要继承BaseAdapter并重写它的
四个抽象方法:
●public int getCount():得到Item的总数
●public Object getItem(int position):根据position得到某个Item的对象
●public long getItemId(int position):根据position得到某个Item的id
●public View getView(int position, View convertView, ViewGroup parent):得到相应
position对应的Item视图,position当前Item的位置,convertView复用的View对
象。
2)SimpleAdapter
SimpleAdapter继承自BaseAdapter,实现了BaseAdapter的四个抽象方法,分别是getCount()、getItem()、getItemId()、getView()方法。因此开发者只需要在创建SimpleAdapter 实例时,在构造方法里传入相应的参数即可。
3)ArrayAdapter
ArrayAdapter也是BaseAdapter的子类,与SimpleAdapter相同,ArrayAdapter也不是抽象类,并且用法与SimpleAdapter类似,开发者只需要在构造方法里面传入相应参数即可适配数据。ArrayAdapter通常用于适配TextView控件
public class TeacherAdapter extends BaseAdapter {
private List<Teacher> tList;
private Context context;
public TeacherAdapter(Context context, List<Teacher> tList){
this.tList=tList;
}
@Override
public int getCount() {
return tList.size();
}
@Override
public Object getItem(int position) {
(position);
}
@Override
public long getItemId(int position) {
return  position
}
抽象类的使用@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view=View.inflate(context,R.layout.item,null);
if(view!=null)
{
TextView txtId=(TextView)view.findViewById(View1);
TextView txtName=(TextView)view.findViewById(View2);
txtId.(position).getId());
txtName.(position).getName());
}
return view;
}
}
(4)绑定数据源
spnTeacher= (Spinner) findViewById(R.id.spnTeacher);
List<Teacher> tlist=new ArrayList<Teacher>();
tlist.add(new Teacher("1001","张珊"));
tlist.add(new Teacher("1008","黄河"));
tlist.add(new Teacher("1009","黄河"));
tlist.add(new Teacher("1180","刘芳芳"));
//  建立Adapter绑定数据源
TeacherAdapter adapterTeacher=new TeacherAdapter(this, tlist); //绑定Adapter
spnTeacher.setAdapter(adapterTeacher);
【思考】在教师Teacher信息中增加性别(sex),同时在Spinner 下拉列表中,添加表示教师性别信息的图像。(如下图)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。