adapter优化需要两步,这是google i/o大会推荐的
第一步,复用convertview
复用convertview的目的是为了复用已经用过的view,否则每次都要实例化,占用内存资源多,效率太低,
在初始显示时,convertview的值为Null,当显示完整个屏幕,再往下滑的时候,convertview的值就是原来的旧的view.原理是,android提供了缓存功能,使用recycle把用过的view缓存起来
使用方式
第二步 创建viewholder
viewholder的主要作用是一次性调用findviewbyid,否则每次getview都需要findview,效率低。其次实现了面向对象的思想,把item中的view封装成对象
关键代码如下
getView(int positon ,View convertView,ViewGroup parent){
private Holder holder = null;
if(convertview ==null){
convertview =layoutinfalter.inflater(....xml);
holder = new Holder();
holder.view1 = findv