做的这个适配器是继承BaseAdapter的,我们都知道使用listview要绑定数据,Android系统也提供了一个SimpleAdapter,这一个很强大,可以实现很多功能,但有时候我们需要一些个性化的设置,所以就需要自定义了
首先是我们的Adapter类:
public class MyAdapter extends BaseAdapter{
private List<? extends Map<String, ?>> listItems;
private LayoutInflater listContainer;
private class RecentViewHolder {//容器
TextView word;
TextView explain;
}
public MyAdapter(Context context,List<Map<String,Object>> listItems) {
listContainer = LayoutInflater.from(context);
this.listItems = listItems;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return listItems.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return listItems.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {//listview的每个Item都会执行一遍
// TODO Auto-generated method stub
RecentViewHolder listItemView = null;
if (convertView == null) {
//获取控件
listItemView = new RecentViewHolder();
convertView = listContainer.inflate(R.layout.list, null);
listItemView.word=(TextView)convertView.findViewById(R.id.textView2);
listItemView.explain=(TextView)convertView.findViewById(R.id.textView3);
convertView.setTag(listItemView);//把容器添加到View
} else {
listItemView = (RecentViewHolder) convertView.getTag();
}
//给控件设置值,也是自己的个性化区域,加什么就在这里吧,别犹豫了
listItemView.word.setText(listItems.get(position).get("Word").toString());
listItemView.explain.setText(listItems.get(position).get("Explain").toString());
return convertView;
}
}
Adapter类定义完后就可以用了:
MyAdapter myAdapter = new MyAdapter(main.this, list);