说说ViewHolder的另外一种写法

每为一个AdapterView写Adapter适配器,你是否都会建立 一个static的ViewHolder类来负责临时存储ItemView?不用回答我也已经听见了你的抱怨,那么下面为你们介绍另一种我常常使用的写法,今后和无尽的ViewHolder说拜拜,并且不会影响页面加载的性能。
微信

Android为开发者提供了ListView和GridView这两个经常使用于显示列表的控件。在不使用ViewHolder的状况下过程当中,列表子View数量很少的状况下,可能不大看的出列表加载性能上的差别。可是相信在菜鸟阶段的时候,每一位都亲测过在上述状况下,列表展现较多数据时加载是何等的坑爹,会出现滑动不顺畅呀的现象。出现的缘由呢就是由于加载了过多的子View,每个子View都须要查找id呀,界面重绘呀等操做,这样致使了内存开销过大以及手机绘图的效率跟不上,才会出现前面咱们说的滑动较卡的现象。因此Android为咱们开发者提供了标准的ViewHolder的写法来重用列表的ItemView,来避免出现上述两个问题。最标准的写法,就是为每个AdapterView的子View新建一个对应的ViewHolder,同时声明为prtivate final static。数据结构

好了,背景介绍完毕,上代码。性能

上面两张图片展现了ViewHolder和它的使用。能够看到这里定义的ViewHolder代码是十分的简单,使用起来也是很是的轻便。并且这种代码的写法也彻底等价于谷歌官方推荐咱们使用的作法。看到这里是否是很惬意呀!spa

SparseArray<View>在代码理解上等价于HashMap<Interger, View>,SparseArray是Android提供的一个数据结构,旨在提升查询的效率。因此View childView = viewHolder.get(id);这句代码的时间上的开销是极小的,彻底不会影响到执行的效率。.net

今天的代码不多,就不为你们提供源码了,也就上面区区十来行。最后但愿能够帮到各位在码农一线工做的朋友。orm

若是以为对你有所帮助,欢迎你们订阅个人微信公众帐号——Android干货分享。下面是微信的二维码,为你提供及时高质的Android干货。图片

相关文章
相关标签/搜索