ListView优化

来源:互联网 发布:μcos ii源码v2.86 编辑:程序博客网 时间:2024/05/17 07:16

当我们有大量的内容的时候用listView将其显示出来,是很方便的。用listView就必须会用到适配器,我们平常会较多的用到继承自BaseAdapter写一个自己的Adapter。而其中最主要需要实现的方法是getView()。写getView我们一般会有以下三种方法:

//第一种方法:public View getView(int i, View convertView, ViewGroup viewGroup) {        convertView = inflater.inflate(R.layout.item_list, null);        TextView tv = convertView.findViewById(R.id.text);        tv.setText("aa");        return convertView;}//第二种方法:public View getView(int i, View convertView, ViewGroup viewGroup) {    if(convertView == null){        convertView = inflater.inflate(R.layout.item_list, null);    }        TextView tv = convertView.findViewById(R.id.text);        tv.setText("aa");        return convertView;}//第三种方法@Override    public View getView(int i, View view, ViewGroup viewGroup) {        ViewHolder holder;        if(view == null){            view = inflater.inflate(R.layout.item_list, null);            holder = new ViewHolder();            holder.textView = (TextView) view.findViewById(R.id.tv_item);            view.setTag(holder);        }else{            holder = (ViewHolder) view.getTag();        }        holder.textView.setText(list.get(i));        if(list.get(i).equals("5")){            holder.textView.setBackgroundColor(Color.RED);        }else {            holder.textView.setBackgroundColor(Color.BLUE);        }        return view;    }    public class ViewHolder{        public TextView textView;    }

谷歌官方对以上三种方法的执行效率做了比较,他们的效率比分别是:4 : 10 : 11,所以平常用的时候还是用第三种方法比较好。而且如果想要有更好的优化,有item中存在图片的时候,可以对图片进行优化:
1.对图片进行边界处理,
2.进行三级缓存——内存、本地、网络。常用的有LruCache并添加线程池。如果懒得写这些也可以去网络上找一些开源的框架,比如UniversalImageLoader。
3.对滑动进行监听:当快速和慢速滑动的时候不进行任何加载,只是默认显示一个本地的图片,当滑动停止的时候开始加载这一屏幕的所有图片。

如果把以上的几点做到的话,还是可以起到很好的优化作用的。
0 0
原创粉丝点击