安卓开发之ListView优化方案

来源:互联网 发布:数据库表结构属性 编辑:程序博客网 时间:2024/05/29 04:37

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)

三、图片的缓存加载

0 0
原创粉丝点击