做的这个适配器是继承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);