基于延迟加载技术ListView控件优化.docVIP

  • 5
  • 0
  • 约3.42千字
  • 约 7页
  • 2018-08-29 发布于福建
  • 举报
基于延迟加载技术ListView控件优化

基于延迟加载技术ListView控件优化   摘要摘要:Android目前已是世界上占有率最大的手机平台,引发了一场移动互联网的开发热潮,其前景也被越来越多的人看好。针对使用安卓中ListView控件时存在的内存问题进行探讨,并实现了通过数据的延迟加载来优化ListView控件。   关键词关键词:ListView控件; 延迟加载技术;控件优化   DOIDOI:10.11907/rjdk.151950   中图分类号:TP319   文献标识码:A文章编号文章   编号2015)011009302   基金项目基金项目:湖南省教育厅一般项目(14C1015);邵阳学院研究生科研创新项目(CX2014SY021)   作者简介作者简介:段顼(1989-),男,湖南邵阳人,邵阳学院机械与能源工程系硕士研究生,研究方向为移动通信应用开发及智能信息处理。   0引言   ListView是Android应用程序开发中最常用的控件之一,该控件使用垂直列表的方式显示多个选项。利用Android开发软件操作简单,尤其利用其可视化控件可大大提高编程效率。然而,ListView控件所占内存的大小将直接影响到ListView的运行速度。对于用户而言,一般通过开启无线WiFi或数据流量来加载数据,WiFi网络的好坏将极大地影响数据加载速度。当加载大容量数据(如图片)时,如果网络不是很好,加载则比较耗时;若开启数据流量,则将耗损大量流量。此外,由于移动终端手机显示屏的局限性,当显示批量数据时[1],若由用户自主决定是否加载更多数据,则较为合适且更人性化,也可以大大节省内存和流量。   1ListView控件与Adapter   ListView是一种可以显示一系列项目并能滚动显示的View,同时对于所有的子View都是相互独立的个体。通常由一个xml指定,并显示一条数据集合[2]。在每行中,既可以是简单的文本,也可以是复杂的结构。一般情况下,需要保证ListView渲染快速、滚动流畅。   列表的显示主要由ListVeiw、适配器和数据3个元素构成,其中,ListVeiw用来展示列表中的View;适配器用来把数据映射到ListView上;数据将被映射的字符串、图片或基本组件映射至ListView上。对于批量数据的显示,Adapter和ListView必须进行绑定,可以把Adapter看作ListView 的数据源,ListView接收Adapter传递的数据并显示出来。Adapter又可称为适配器,通过适配器可以实现用户界面View和数据的绑定。Adapter主要负责创建用于表示每一个条目的子View,同时提供对底层数据的访问。Android提供了多种类型的Adapter,并且能够支持用户自定义适配器,从而实现ListView控件中子View元素的布局显示[4]。   2延迟加载优化原理及实现   延迟加载即在不得不更新时才更新和加载。用户在滚动屏幕时,有些滚动是中间过程,这些行将一闪而过,实际上这些行没有必要在服务器上更新和下载,在这种情况下可以利用延迟加载技术监测ListView的滚动事件。滚动主要分为3个状态:①“Idle”:空闲,也即停止滚动;②“Touch scroll”:用户手指按下开始滚动;③“Fling”:滑动状态。   通过Adapter动态地获取数据,在Adapter中设定“TouchScroll”、“Fling”中的mBusy=true,“Idel”中的mBusy=false。通过WarnAdapter中的mBusy来判断用户行为,当mBusy=true:用户处在滑动屏幕或屏幕还处于滚动状态也即中间过程时,设定其显示内容为“Loding......”,在该情况下ListView并没有从服务器获取、加载和更新数据;当mBusy=false:用户停止滑动也即“Idel”时,才会加载和更新数据。   2.1通过onScrollStateChanged实现3种滚动状态监听   利用onScrollStateChanged实现用户停止滚动屏幕、按下滚动屏幕、滚动屏幕3种状态的监听,具体实现方法如下:   屏幕处于空闲状态,如图1所示,可以通过设定onScrollStateChanged状态SCROLL_STATE_IDLE,也即空闲状态,同时设定适配器中的WarnAdapter.mBusy=false,此时屏幕状态为mStatues.setText(Idle)。   屏幕处于滑动状态,如图2所示,可以通过设定onScrollStateChanged状态CROLL_STATE_FLING,也即滚动状态,同时设定适配器中的WarnAdapter.mBusy=true,此时屏幕状态

文档评论(0)

1亿VIP精品文档

相关文档