ListView优化方案
ListView的一些优化
一、Adapter中的优化
运用了convertView的回收视图,当convertView不为NULL时,就不需要再去解析视图。
还利用了viewholder模式,不用每次都去通过id查找控件findViewByID,而是将View保存在viewholder中,再通过convertView将viewholder标记下来。实例代码
public class BookAdapter extends BaseAdapter {
private Context mContext;
private List<Book> mdata;
public BookAdapter(Context mContext, List<Book> mdata) {
this.mContext = mContext;
this.mdata = mdata;
}
public void refresh(List<Book> list) {
mdata = list;
notifyDataSetChanged();
}
public List<Book> getDataList() {
return mdata;
}
@Override
public int getCount() {
return mdata.size();
}
@Override
public Book getItem(int position) {
return mdata.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder = null;
if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(R.layout.item_book, null);
holder = new Holder();
holder.tv_book = (TextView)convertView.findViewById(R.id.book_text);
holder.tv_uri = (TextView) convertView.findViewById(R.id.book_uri);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
holder.tv_book.setText(mdata.get(position).getName());
holder.tv_uri.setText(mdata.get(position).getLink());
return convertView;
}
class Holder {
private TextView tv_book ,tv_uri;
}
}
二、图片的异步加载
监听ListView滚动状态,只有当其静止的时候才异步加载网络图片数据。
(给ImageView设置tag)
本文探讨了ListView的优化方案,包括Adapter中的convertView回收、ViewHolder模式减少资源消耗,以及图片的异步加载与缓存策略。

641

被折叠的 条评论
为什么被折叠?



