Android开发之ViewHolder学习笔记

Android开发之ViewHolder学习笔记,BaeAdater是使用得比较多的一个类适配器,通过重写getView方法,展示自定义视图,如何优化getView方法是程序员讨论的热点,最近了看了一篇TeachCoure的文章,使用ViewHolder类可以很好优化适配器的性能,原理:每次加载getView视图,只缓存第一次可见的getVi...
BaseAdapter是使用得比较多的一个类适配器,通过重写getView方法,展示自定义视图,如何优化getView方法是程序员讨论的热点,最近了看了一篇TeachCourse的文章,使用ViewHolder类可以很好优化适配器的性能,原理:每次加载getView视图,只缓存第一次可见的getView视图,以后每次调用缓存,更新getView视图中数据达到优化性能目的。步骤阅读工具/原料Android开发工具:AndroidStudio或Eclipse虚拟设备或测试手机一、熟悉BaseAdapter抽象类1BaseAdapter继承Object,实现接口ListAdapter、SpinnerAdapter,必须实现Adapter的四个抽象方法:getItem(int),getItemId(int),getCount(),getView(int,View,ViewGroup)步骤阅读2方案一、初学者经常使用的方法,方法中不使用ViewHolder缓存视图,首先初始化视图对象,每次初始化getView方法中的View对象,这样会创建很多很多个实例,可能造成内存的溢出,更新数据的速度变得比较慢,不推荐使用,代码如下:步骤阅读3方案二、使用ViewHolder,比较推荐的一种优化方案,在项目开发中,会在BaseAdapter子类中创建一个ViewHolder内部类或者独立声明一个ViewHolder类,在ViewHolder类中声明控件名称,然后在getView方法中使用初始化一次,View对像初始化一次,将控件引用赋值给ViewHolder变量,代码如下:步骤阅读步骤阅读4方案三、原理和方案二一样,在第一次加载可见视图的时候,缓存控件,以后每次加载直接更新数据,但多次使用findViewById方法,在性能上比第一种还差,不妨看试试,代码如下:步骤阅读5三种方法中,现在性能上推荐使用ViewHolder,第一步定义内部类,第二步判断convertView是否为第一次加载,如果是第一次加载就初始化一次ViewHolder类,并设置ViewHolder属性值(声明的控件,作为内部类属性),否则根据标签中获取缓存的ViewHolder对象,再分别给ViewHolder属性设置值(即填充数据),这里需要注意是如果使用setTag有多个标签,使用带参数的setTag(mName,mView)的方法,例如方案三步骤阅读END注意事项BaseAdapter至少重写四个方法:getItem(int),getItemId(int),getCount(),getView(int,View,ViewGroup)ViewHolder性能优化的实质:封装实体对象,初始化一次,反复更新数据

本文来自投稿,不代表长河网立场,转载请注明出处: http://www.changhe99.com/a/5odYR19674.html

(0)

相关推荐