Android开发

Android中ListView优化

2016-09-26  本文已影响198人  RunHuaOil

内容来源与《第一行代码》

在 getView 方法中优化


我们在使用ListView显示数据时需要用到适配器,这里我们用的是 ArrayAdapter , 这里举例用的是显示水果的图片以及名称,如下所示:

首先创建一个适配器来继承于ArrayAdapter,就叫 FruitAdapter,并重写父类的 getView 方法。在这个方法里面对我们自定义的 Item 进行绘制,系统加载一条一条Item时,都会执行 getView 方法,所有我们的优化也选择在此方法中。未优化之前的代码如下:

系统每次运行getView方法时都会设置 item 的布局,重新获取控件的ID,ListView的item离开可视区域再重新进入又会重新绘制,好在getView的第二个参数 convertView 就是用来缓存view的,假如我们的view已经绘制过,那么在 convertView中就存储对应的view;而反复获取控件ID的解决方法可以利用view的 setTag 方法来存储控件ID,控件ID与对应view捆绑起来,当view存在缓存而不用重新创建时,从view 中用 getTag 方法获取控件ID来做赋值操作。优化后代码如下:

每次进入 getView 时判断 convertView 是否为空来决定是否重新绘制,这里创建一个 ViewHolder 类来存储控件ID,最后通过 view.setTag 方法将该类存储进去。

通过这两个技巧,ListView的性能也就上去了


该项目的GitHub:https://github.com/RunHuaOil/AndroidPractice/tree/master/ListViewTest

上一篇下一篇

猜你喜欢

热点阅读