BaseAdapter的三样式 IV

在创建adapter对象时要继承BaseAdapter,引用到的一些方法

public class MyAdapter extends BaseAdapter {
 private final List<ItemBean> mList;
 private final LayoutInflater inflater;
//context为引用的类,list集合是创建视图的listview集合
 public MyAdapter(Context context, List<ItemBean> list) {
  mList = list;
  inflater = LayoutInflater.from(context);
 }

 @Override
 public int getCount() {
  return mList.size();
 }

 @Override
 public Object getItem(int arg0) {
  return mList.get(arg0);
 }

 @Override
 public long getItemId(int arg0) {
  return arg0;
 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
      return converView;
}
}


// 逗比式,利用了ListView的视图缓存,再次调用时会重现使用findById()
  // View view = inflater.inflate(R.layout.item, null);
  // ImageView img = (ImageView) view.findViewById(R.id.image);
  // TextView title = (TextView) view.findViewById(R.id.title);
  // TextView content = (TextView) view.findViewById(R.id.content);
  // img.setBackgroundResource(mList.get(arg0).ItemImage);
  // title.setText(mList.get(arg0).ItemTitle);
  // content.setText(mList.get(arg0).ItemContent);
  // return view;
  // 逗比式
  // 普遍式,判断已经创建了视图缓存对象
  // if (convertView == null) {
  // convertView = inflater.inflate(R.layout.item, null);
  // }
  // ImageView img = (ImageView) convertView.findViewById(R.id.image);
  // TextView title = (TextView) convertView.findViewById(R.id.title);
  // TextView content = (TextView) convertView.findViewById(R.id.content);
  // img.setBackgroundResource(mList.get(position).ItemImage);
  // title.setText(mList.get(position).ItemTitle);
  // content.setText(mList.get(position).ItemContent);
  // return convertView;
  // 普通式
  //
//文艺式:不仅利用了ListView的缓存,更通过ViewHolder类来实现显示数据的视图的缓存,避免多次通过findViewById寻找控件。
  Holder holder;
  if (convertView == null) {
   holder = new Holder();
   convertView = inflater.inflate(R.layout.item, null);
   holder.img = (ImageView) convertView.findViewById(R.id.image);
   holder.title = (TextView) convertView.findViewById(R.id.title);
   holder.content = (TextView) convertView.findViewById(R.id.content);
   convertView.setTag(holder);
  } else {
   holder = (Holder) convertView.getTag();
  }
  ItemBean bean = mList.get(position);
  holder.img.setImageResource(bean.ItemImage);
  holder.title.setText(bean.ItemTitle);
  holder.content.setText(bean.ItemContent);
  return convertView;
  // 文藝式


使用ViewHolder优化BaseAdapter的思路(如图)
需要注意几点:
1. Bean对象中封装ListView的每一行数据
2. MainActivity中创建并填充List<ItemBean> itemList;
for (int i=0; i<20; i++) {
itemList.add(new ItemBean(R.drawable.ic_launcher, "Title"+i, "I am an Android app debugger"+i));
}
3. 自定义适配器的构造方法中传入List<ItemBean> itemList数据
public MyAdapter(Context context, List<ItemBean> itemList) {
super();
this.itemList = itemList;
mInflater = LayoutInflater.from(context);
}
4. getView()方法中将当前的ItemBean数据对象填充到当前convertView中
ItemBean itemBean = itemList.get(position); //得到当前行的ItemBean对象,里面包含了数据
viewHolder.imageView.setImageResource(itemBean.imageResId);
viewHolder.title.setText(itemBean.title);
viewHolder.content.setText(itemBean.content);
return convertView;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值