- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android中ListView控件优化方法
Android中ListView控件优化方法
摘 要:ListView控件使用垂直列表方式显示多个列表项,通过复用列表项和将列表项界面中的全部控件进行数据持有化的优化方法,提高程序的运行效率。
【关键词】ListView 优化 列表项
ListView是Android应用程序开发中最常用的控件之一,该控件使用垂直列表的方式显示多个选项,特别适用于像手机这种长方形屏幕,且屏幕相对较小的设备。我们在手机上常用的通讯录、微博、QQ聊天和淘宝宝贝的浏览等,都是通过ListView控件进行显示的。
1 ListView控件简介
ListView控件是一个列表控件,它继承自AdapterView类,AdapterView可以通过Adapter适配器类向其子类视图填充数据。
ListView控件的特点是每一个列表项(item)独占一行,每一行的布局都是相同的,其中显示的内容和行布局分离。所以,ListView可以使用Adapter适配器来填充数据,而它本身只负责布局。
2 ListView控件的优化方法
2.1ListView控件中列表项的复用
在使用ListView控件时,我们需要注意如果我们把所有需要显示的列表项都创建界面(convertView)进行加载,那么当加载的列表项过多时,就会占用大量的内存。为解决这个问题,ListView控件在设计上采用了只创建同时显示在当前屏幕中的列表项的布局对象。如,当前屏幕最多显示10个列表项,那么ListView只创建10个convertView,其后反复使用这10个convertView显示进入到屏幕中的列表项即可。
当向上滚屏时,最上面的convertView移出屏幕,该convertView将加载下面要显示的列表项,从屏幕最下面再次出现。同理,当向下滚屏时,最下面的convertView移出屏幕,该convertView将加载上面要显示的列表项,从屏幕最上面再次出现。
通过这种优化方式,我们不用再每次都创建新的convertView,而是采取每次判断convertView是否为空,若为空,则创建布局对象。若不为空,说明当前屏幕能够同时显示的convertView都已经创建完毕, 此时将滑出屏幕的convertView取出,然后显示新的数据。
2.2 使用数据持有对象保存convertView中的全部控件
当我们在ListView中显示converView时,需要每次通过convertView.findViewId()方法来获取convertView中使用的各个控件,由于每次都需??遍历对应的XML文件,降低程序运行效率.我们也可以将每个convertView中使用的各个控件也保存成一个对象,进行复用,以优化程序。然后,我们可以通过以下两个方法将保存好的对象和当前的convertView对象进行关联。
(1) convertView.setTag(Object obj)方法,将对象obj与当前的convertView相关联;
(2)convertView.getTag()方法,获取与当前的convertView相关联的对象;
3 通过实例说明ListView控件的优化方法
下面以一个显示图书目录程序为例,说明如何对ListView控件进行优化使用。
步骤1.在activity_main.xml布局文件中声明ListView控件;
步骤2.创建第二个布局文件item.xml,在该布局文件中为ListView的item设计显示样式;该布局文件可以设计为如下图1所示布局。
步骤3.在MainActivity中实例化ListView控件,实例化对象的名字为lvBooks;
步骤4.获取数据集,即需要在ListView中显示的图书信息数据集;
步骤5.创建适配器BookAdapter,其继承自BaseAdapter类,用来抽取出一条条item列表项在ListView中显示;
说明:在这里,我们采用MVC模式显示、处理数据。其中步骤1、2负责建立View显示层,设置显示的样式;步骤4需要建立Module层类,获取图书信息;步骤5是将适配器作为控制层,负责控制数据在View中的显示。
在使用步骤5中的适配器完成数据控制,在ListView中显示数据时,主要通过以下几个步骤完成:
a.在BookAdapter类中定义两个属性,图书信息数据集books和布局解析器inflater,在构造方法中对其进行实例化;
b.根据需要,实现以下继承自抽象类BaseAdapter中的方法。
(1)使用getView方法将每一条图书信息加载到每一个item界面上去。
文档评论(0)