关于ListView的优化总结

ListView在一般场景中,难免需要实现自定义的适配器,适配器中的getView方法方便灵活的可以按照我们的想法进行自定义。       值得一提的是getView方法中都要执行两个比较耗时的操作  inflate 进行获取布局对象  findViewById进行获取控件               ListView优化分为两个级别,一级优化是用系统提供的ConverView 二级优化是在一级优化的基础上使用自定义的ViewHolder进行优化两者的原理通过减少反射操作的次数。
      ConverView原理:安卓的视图对象被渲染过的会放在Recycler(缓存池)中,新滑出的视图就从Recycler(缓存池)中直接获取,初始化的时候则通过inflate反射获取视图对象           ViewHolder原理: ViewHolder是静态的类,内存加载快,放置控件的对象,当ConverView新建 ViewHolder随之一起缓存到了Recycler(缓存池)中。当ConverView已被创建,则ViewHolder取出,不用再次调用findViewById,给控件赋值

一开始默认的写法是这样的

@Override
public View getView(int position, View convertView, ViewGroup parent) {View myView = LayoutInflater.from(mycontext).inflate(R.layout.item_test_list_view,null);TextView name= (TextView) myView.findViewById(R.id.tv_name);TextView qianming= (TextView) myView.findViewById(R.id.tv_qianming);name.setText(mylist.get(position).getName());qianming.setText(mylist.get(position).getQianming());return myView;
}

使用converview优化

重复用存放在回收池的缓存的视图view

@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if(convertView ==null){convertView =  LayoutInflater.from(mycontext).inflate(R.layout.item_test_list_view,null);}TextView name= (TextView) convertView.findViewById(R.id.tv_name);TextView qianming= (TextView) convertView.findViewById(R.id.tv_qianming);name.setText(mylist.get(position).getName());qianming.setText(mylist.get(position).getQianming());return convertView;}

使用ViewHolder优化

@Override
public View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder=null;if(convertView == null){convertView = LayoutInflater.from(mycontext).inflate(R.layout.item_test_list_view,null);viewHolder = new ViewHolder();viewHolder.name= (TextView) convertView.findViewById(R.id.tv_name);viewHolder.qianming= (TextView) convertView.findViewById(R.id.tv_qianming);convertView.setTag(viewHolder);}else{viewHolder = (ViewHolder) convertView.getTag();}viewHolder.name.setText(mylist.get(position).getName());viewHolder.qianming.setText(mylist.get(position).getQianming());return convertView;
}private static class ViewHolder{TextView name;TextView qianming;
}

关于ListView的优化总结相关推荐

  1. ym——Android之ListView性能优化

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! Android之ListView性能优化 假设有看过我写过的15k面试题的朋友们一定知 ...

  2. Android 使用Listview的优化

    Listview是Android中很重要的一个组件,在开发过程中使用到的Listview能站到30%,在新手开发过程中,往往会忽略对Listview的优化,在上一个项目的开发中,确实用到了很多List ...

  3. Android ListView 的优化

    一.复用convertView.降低findViewById的次数 1.优化一:复用convertView Android系统本身为我们考虑了ListView的优化问题,在复写的Adapter的类中. ...

  4. Android Listview 性能优化

    首先我一般使用的适配器是BaseAdapter,其中有两个方法最主要,分别是: getCount,getView, 在对Listview 进行优化的时候,首先使用 convertview 和viewH ...

  5. Android ListView性能优化实例讲解

    前言: 对于ListView,大家绝对都不会陌生,只要是做过Android开发的人,哪有不用ListView的呢? 只要是用过ListView的人,哪有不关心对它性能优化的呢? 关于如何对ListVi ...

  6. ListView使用BaseAdapter与ListView的优化

    2019独角兽企业重金招聘Python工程师标准>>> 在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作.也就是说,这个ListView不再只是展示数据, ...

  7. Android ListView使用BaseAdapter与ListView的优化

    在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作.也就是说,这个ListView不再只是展示数据,也不仅仅是这一行要来处理用户的操作,而是里面的控件要获得用户的焦点.读者可 ...

  8. Android高级控件之ListView的优化以及下拉刷新页面

    1.ListView的优化 在优化之前我们先来说说配置器的自定义,为什么需要自定义配置器呢,因为系统自带的配置器不能满足我们的需求,所以就需要我们自己写配置器来实现功能, 但是在创建ListView时 ...

  9. Android群英传知识点回顾——第四章:ListView常用优化技巧

    Android群英传知识点回顾--第四章:ListView常用优化技巧 知识点目录 4.1 ListView常用优化技巧 4.1.1 使用ViewHolder模式提高效率 4.1.2 设置项目间分割线 ...

  10. Android中ListView的优化

    ListView的优化方案有很多,主要是以下几点         1.  重用了convertView,减少了内存消耗.通过判断convertView是否为null,是的话就需要产生一个ViewHol ...

最新文章

  1. 4. extjs中form中的frame:true表示什么
  2. 滴滴司机端大更新并公布了一份设计方案!
  3. 控制面版中文件服务器属性,《服务器配置与管理》第3章基本配置.pptx
  4. [BUUCTF-pwn]——[OGeek2019]babyrop
  5. 多线程学习(三)----死锁问题
  6. C++中 *(指针引用)与*(指针)的区别
  7. C++ char数组和char*的输入
  8. vue项目使用sass-loader
  9. 【Jmeter篇】Jmeter踩坑记(一)
  10. 飞秋(FeiQ)2012版择日发布
  11. Agglomerated SSL 1.2.0 发布
  12. python抓取教学_Python Selenium 实战教学:爬取每日天气
  13. 走进JavaScript
  14. CnOpenData中国海关统计数据
  15. espritcam后处理教学_Master CAM 后置处理文件及其设定方法详细说明
  16. 如何在你的Android手机上配置 Python 环境?
  17. IBM p720 在HMC上创建分区并安装AIX系统
  18. python背景透明_Python生成透明背景图片
  19. C++builder应用程序设计流程
  20. 模块划分-1 功能划分

热门文章

  1. 魔兽争霸3中的一些数学计算
  2. Win7局域网打印机共享设置
  3. ebay js_eBay上的拍卖域名-完整指南
  4. 【无标题】测试测试测试
  5. Go 语言圣经 练习8.1
  6. matlab 符号方程求职,matlab 符号 方程
  7. 安装VS Code(适用于Win7)
  8. PMSM中常用的两种坐标变换——两种参数的由来
  9. 舒舍说:北漂和陌生人合租靠谱吗?
  10. 电子沙盘虚拟数字沙盘培训教程第3课