美文网首页Android
浅谈ListView性能优化

浅谈ListView性能优化

作者: HuDP | 来源:发表于2015-08-09 09:51 被阅读356次

    很多小伙伴可能一看标题...啥ListView 这个早过时了的东西好不好,没关系即使使用RecyclerView 思路都是想通的。

    为什么写这篇文章?因为重要嘛!实际开发中,列表类控件用的比较频繁,而且也容易出问题。so...咱们开始吧!

    1. View重用,这个大部分博客都有提到
      思路就是重用converView,使用ViewHolder 减少findViewById的次数;
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = convertView;
            ViewHolder holder;
                     // 如果convertView为空 则加载视图和控件
            if (view == null) {
                view = LayoutInflater.from(context).inflate(R.layout.item, null);
                holder = new ViewHolder();
                holder.tv_name = (TextView) view.findViewById(R.id.tv_name);
                holder.tv_phone = (TextView) view.findViewById(R.id.tv_phoneNum);
                view.setTag(holder);
            } else { //如果不为空 则用getTag取出事前setTag的ViewHolder
                holder = (ViewHolder) view.getTag();
            }
            Info info = InfoLists.get(position);
            if (info != null) {
                holder.tv_name.setText(info.getContactName());
                holder.tv_phone.setText(info.getContact_Phone());
            }
            return view;
        }
    
    1. 点击事件监听器不写在getView里面,为了减少回调接口的对象数量(实现起来有问题);

    2. 使用LruCache和DiskLruCache对网络图片进行缓存,避免重复的网络请求;
      这部分内容可以采用ImageLoader,不过建议去了解里面的具体实现,我们不重复造轮子,但是很有必要知道轮子是如何造的。

    3. 显示需要显示的那部分图片;此话怎讲?就是给ImageView设置图片的时候,只对当前已显示的这部分ImageView进行设置;

    4. 图片根据图片控件大小压缩显示,可以查看博主的另一篇博客 Bitmap的加载和Cache

    有任何建议与疑问,欢迎留言交流或者Email:mox113@foxmail.com

    相关文章

      网友评论

        本文标题:浅谈ListView性能优化

        本文链接:https://www.haomeiwen.com/subject/zzfiqttx.html