关于ListView的优化总结
关于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的优化总结相关推荐
- ym——Android之ListView性能优化
转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! Android之ListView性能优化 假设有看过我写过的15k面试题的朋友们一定知 ...
- Android 使用Listview的优化
Listview是Android中很重要的一个组件,在开发过程中使用到的Listview能站到30%,在新手开发过程中,往往会忽略对Listview的优化,在上一个项目的开发中,确实用到了很多List ...
- Android ListView 的优化
一.复用convertView.降低findViewById的次数 1.优化一:复用convertView Android系统本身为我们考虑了ListView的优化问题,在复写的Adapter的类中. ...
- Android Listview 性能优化
首先我一般使用的适配器是BaseAdapter,其中有两个方法最主要,分别是: getCount,getView, 在对Listview 进行优化的时候,首先使用 convertview 和viewH ...
- Android ListView性能优化实例讲解
前言: 对于ListView,大家绝对都不会陌生,只要是做过Android开发的人,哪有不用ListView的呢? 只要是用过ListView的人,哪有不关心对它性能优化的呢? 关于如何对ListVi ...
- ListView使用BaseAdapter与ListView的优化
2019独角兽企业重金招聘Python工程师标准>>> 在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作.也就是说,这个ListView不再只是展示数据, ...
- Android ListView使用BaseAdapter与ListView的优化
在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作.也就是说,这个ListView不再只是展示数据,也不仅仅是这一行要来处理用户的操作,而是里面的控件要获得用户的焦点.读者可 ...
- Android高级控件之ListView的优化以及下拉刷新页面
1.ListView的优化 在优化之前我们先来说说配置器的自定义,为什么需要自定义配置器呢,因为系统自带的配置器不能满足我们的需求,所以就需要我们自己写配置器来实现功能, 但是在创建ListView时 ...
- Android群英传知识点回顾——第四章:ListView常用优化技巧
Android群英传知识点回顾--第四章:ListView常用优化技巧 知识点目录 4.1 ListView常用优化技巧 4.1.1 使用ViewHolder模式提高效率 4.1.2 设置项目间分割线 ...
- Android中ListView的优化
ListView的优化方案有很多,主要是以下几点 1. 重用了convertView,减少了内存消耗.通过判断convertView是否为null,是的话就需要产生一个ViewHol ...
最新文章
- 4. extjs中form中的frame:true表示什么
- 滴滴司机端大更新并公布了一份设计方案!
- 控制面版中文件服务器属性,《服务器配置与管理》第3章基本配置.pptx
- [BUUCTF-pwn]——[OGeek2019]babyrop
- 多线程学习(三)----死锁问题
- C++中 *(指针引用)与*(指针)的区别
- C++ char数组和char*的输入
- vue项目使用sass-loader
- 【Jmeter篇】Jmeter踩坑记(一)
- 飞秋(FeiQ)2012版择日发布
- Agglomerated SSL 1.2.0 发布
- python抓取教学_Python Selenium 实战教学:爬取每日天气
- 走进JavaScript
- CnOpenData中国海关统计数据
- espritcam后处理教学_Master CAM 后置处理文件及其设定方法详细说明
- 如何在你的Android手机上配置 Python 环境?
- IBM p720 在HMC上创建分区并安装AIX系统
- python背景透明_Python生成透明背景图片
- C++builder应用程序设计流程
- 模块划分-1 功能划分