首页 理论教育 优化BaseAdapter实现的方法论

优化BaseAdapter实现的方法论

时间:2023-06-17 理论教育 版权反馈
【摘要】:本节引言在上一节已经学习了如何使用ListView以及自定义一个简单的BaseAdapter,从代码中可以看出两个比较重要的方法是:getCount()和getView()。所以学习ListView的优化很重要,而本节主要介绍的是BaseAdapter的优化,优化有复用ConvertView以及使用ViewHolder重用组件两种方法,不用每次都findViewById。

优化BaseAdapter实现的方法论

本节引言

在上一节已经学习了如何使用ListView以及自定义一个简单的BaseAdapter,从代码中可以看出两个比较重要的方法是:getCount()和getView()。界面上有多少列就会调用多少次getView,这个时候可看出一些端倪,每次都是新inflate一个View,都要进行这个Xml的解析,这样会很浪费资源,当然,几十列或者几百列的列表并不能体现什么问题,但假如更多或者布局更加复杂呢?所以学习ListView的优化很重要,而本节主要介绍的是BaseAdapter的优化,优化有复用ConvertView以及使用ViewHolder重用组件两种方法,不用每次都findViewById。

1.复用ConvertView

前面已介绍,界面上有多少个Item,那么getView方法就会被调用多少次。先来看看上一节写的getView()部分代码:

inflate()每次都要加载一次 Xml,其实该方法的参数中有个convertView,这是系统提供给用户可供复用的View缓存对象,修改优化后的代码如下:(www.xing528.com)

2.ViewHolder重用组件

getView()会被调用多次,那么findViewById一样需调用多次,而ListView的Item 一般都是同样的布局,因此可再进行优化,用户可以自己定义一个ViewHolder类来对这部分性能进行优化,修改优化后的代码如下:

因比较简单,以后BaseAdapter照着这个模板编写代码即可。如果需要在多个地方使用这个 ViewHolder对象,可以把该类定义成静态。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈