安卓开发之ListView优化方案

本文探讨了ListView的优化方案,包括Adapter中的convertView回收、ViewHolder模式减少资源消耗,以及图片的异步加载与缓存策略。

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)

三、图片的缓存加载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值