您的位置:首页 > 其它

ListView优化方案

2016-04-13 17:38 381 查看

ListView优化方案

ListView中的优化一般通过减少getView中的耗时操作.

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);

} 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;

}

}


在getView中图片使用的异步加载

可以使用一些第三方图片加载库比如Glide来实现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: