CN106874010A - 一种Android***中ListView快速分页加载的方法 - Google Patents
一种Android***中ListView快速分页加载的方法 Download PDFInfo
- Publication number
- CN106874010A CN106874010A CN201710113352.1A CN201710113352A CN106874010A CN 106874010 A CN106874010 A CN 106874010A CN 201710113352 A CN201710113352 A CN 201710113352A CN 106874010 A CN106874010 A CN 106874010A
- Authority
- CN
- China
- Prior art keywords
- loading
- data
- listview
- paging
- parameter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/0482—Interaction with lists of selectable items, e.g. menus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及一种Android***中ListView快速分页加载的方法,将ListView分页加载的过程拆分为实现基本通用分页逻辑的抽象父类、针对不同加载模式获取加载参数的继承子类、对ListView分页加载具体使用的Activity类三大部分,通过这种方法实现了ListView对资源的分页加载,降低用户等待时间的同时节省了资源消耗。此外,通过封装实现了ListView分页加载功能的快速移植,当应用程序中需要使用该功能时,仅需实例化对象和简单的操作即可,无需多处重复添加分页逻辑,简化了代码复杂程度,提升了开发速度,使ListView的使用更清晰明确,同时易扩展、易维护,提升了***性能。
Description
技术领域
本发明涉及一种Android***中ListView快速分页加载的方法,属于安卓***ListView列表优化技术领域。
背景技术
近年来,Android操作***不断发展演进,搭载Android操作***的智能设备逐渐成为普通人每天必不可少的工具。在安卓设备与用户进行交互的各种方式中,以列表进行信息展示是最常用的一种,因此,ListView成为Android***中应用最灵活广泛的控件之一。开发者可以通过ListView向用户展示资源,包括展示文字、图片、数据等多种不同类型的内容,例如常用的联系人列表、微博信息、微信消息等都是使用ListView控件来实现的。
通常情况下,ListView需要加载的资源往往都超出了Android设备屏幕一页所容纳的数量,当ListView预期要加载的内容包括很多个子项时,如果待加载的资源存在于数据库或服务器中,此时若直接加载全部信息,庞大的数据量会造成大量的内存和网络流量消耗,并且在客户端造成用户长时间等待,对终端用户产生不好的使用体验。基于此,需要对ListView的内容进行分页加载,只显示当前页面内的子项内容,当用户需要读取更多数据时上拉触发加载,再将新加载的数据添加到显示列表中进行显示。目前Android提供的分页操作大致是在Activity中通过滑动***的监听状态触发新的加载,更新固定数目的Item,数据变化后通过Adapter来通知ListView刷新数据,接收数据并进行显示。这种方法存在以下缺陷:1、当应用程序中多处都需要使用ListView列表控件时,需要针对每个控件写分页逻辑以达到预期效果,编程复杂导致软件臃肿,占用更大的存储资源,造成不好的用户体验。2、如果服务器端提供的分页策略发生变化,则在客户端软件需要进行大量的修改,不同策略的操作混在一起,代码复杂会导致效率低下,应用程序不易维护。
发明内容
针对现有技术的不足,本发明提供了一种Android***中ListView快速分页加载的方法。
本发明针对应用程序中加载服务器资源的不同方式,给出了ListView加载资源的相应方法,并且将不同方法进行比较概括,封装成为通用的抽象父类,并在继承子类中获取不同加载模式所需的不同参数,则在Activity中使用ListView时可简单地通过实例化相应子类对象来实现ListView的快速分页加载。本发明公开的方法既通过分页加载实现了迅速的响应和较小的资源开销,又通过封装实现了分页方法的抽象和快速移植利用,满足了固定分页加载和自任一项加载多种不同的需求,使ListView的使用更清晰明确,同时易扩展、易维护,提高了***效率。
术语解释:
1、ListView,指Android***中的列表控件。
2、继承,指Java中子类继承父类,可以获得父类的属性和方法。
3、回调函数,指被调用类反过来使用了调用类中的方法,该方法即为回调函数。
4、divideBase类,是指本发明中实现分页逻辑的抽象父类。
5、固定分页加载,是指服务器端资源按页进行存储和加载的方式。
6、从任一项起始加载,是指服务器端的每条数据分别进行存储和加载的方式。
本发明的技术方案为:
一种Android***中ListView快速分页加载的方法,包括步骤如下:
(1)初始化起始状态;
(2)获取加载数据所需的参数,该参数用以确定所加载数据的位置,根据分页加载模式的不同,封装成不同的独立的抽象方法,即参数获取方法,供不同的子类实现;
(3)封装加载数据抽象方法,在本方法中需要调用步骤(2)中的参数获取方法,将加载数据所需的参数传递到本步骤的方法中;
(4)实现具体的数据加载方法,即对步骤(3)中封装的加载数据抽象方法进行具体使用:先判断加载标志位状态,如果加载标志位状态为false状态时,则判定当前没有加载任务,调用步骤(3)中的加载数据抽象方法,同时将加载标志位置为true状态;否则,当加载标志位状态为true状态时,则判定当前有加载任务,不执行加载方法,也不返回任何数据;加载标志位是一个boolean类型的量,包括true状态和false状态两种状态,false状态表示当前没有加载线程执行,true状态表示当前已有加载线程正在运行;
(5)当加载结束时,判断是否成功加载新数据,如果成功,ListView的适配器会收到新数据,更新当前显示界面页标号参数,就是赋新值,更新为返回来的当前参数值,并返回本次加载所读取的新数据,并在客户端进行显示,同时将加载标志位置为false;如果加载失败,返回原来的页标号状态,即返回原状态。不影响下一次的加载请求。
根据本发明优选的,上述步骤(3)至步骤(5)由抽象父类即divideBase类来实现。由此完成了客户端请求服务器端加载资源的通用逻辑封装。
根据本发明优选的,所述步骤(2),当分页加载模式为按固定分页加载时,参数获取方法由子类divideA实现,设定需要获取的两个参数分别记为param1、param2,包括步骤如下:
A、在服务器端提供的资源池中,为全部资源进行分页标号;
B、客户端向服务器提出加载数据的请求时,同时向服务器发送当前客户端内容的页标号index,服务器根据收到的页标号index,将页标号index加1,即得到所需参数param1为index+1;每页所包含的数据子项数目size即为param2,服务器端根据参数按约定协议返回下一页的数据,如JSON格式,客户端通过回调函数获取下一页的数据后解析并显示在界面中。
根据本发明优选的,所述步骤(2),当分页加载模式为从任一项起始加载时,参数获取方法由子类divideB实现,设定需要获取的两个参数分别记为param3、param4,包括步骤如下:
C、在服务器端提供的资源池中,服务器端为显示在ListView中的每一项内容分别进行标号;
D、客户端向服务器提出加载数据的请求时,同时向服务器发送当前客户端界面中的首项位置position,即得到所需参数param3为position+size1,得到所需参数param4为param3+size1-1,size1为每页所包含的数据子项数目,服务器端根据参数按约定协议返回下一页的数据,如JSON格式,客户端通过回调函数获取下一页的数据后解析并显示在界面中。
上述参数param1、param2、param3、param4的计算方法由子类复写实现,父类中只提供抽象方法以供继承。
当应用程序的Activity中要使用ListView控件并进行分页加载时,只需要根据加载模式的不同实例化相应继承子类的对象,复写其加载方法并添加回调函数,完成加载过程,即可实现快速分页加载的操作。如果要使用其他加载模式,只需要实例化其他子类的对象即可,不必再重写相同的分页逻辑代码。
本发明的有益效果为:
1、本发明将ListView分页加载的过程拆分为实现基本通用分页逻辑的抽象父类、针对不同加载模式获取加载参数的继承子类、对ListView分页加载具体使用的Activity类三大部分,通过这种方法实现了ListView对资源的分页加载,降低用户等待时间的同时节省了资源消耗。
2、本发明通过封装实现了ListView分页加载功能的快速移植,当应用程序中需要使用该功能时,仅需实例化对象和简单的操作即可,无需多处重复添加分页逻辑,大大简化了代码复杂程度,提升了开发速度,使ListView的使用更清晰明确,同时易扩展、易维护,提升了***性能。
附图说明
图1为Android***中ListView快速分页加载的方法的流程框图;
图2为按固定分页加载对应的继承子类divideA类框架图;
图3为从任一项起始加载对应的继承子类divideB类框架图;
图4为使用ListView快速分页功能的Activity框架图。
具体实施方式
下面结合说明书附图和实施例对本发明作进一步限定,但不限于此。
实施例
一种Android***中ListView快速分页加载的方法,如图1所示,包括步骤如下:
(1)初始化起始状态;
(2)获取加载数据所需的参数,该参数用以确定所加载数据的位置,根据分页加载模式的不同,封装成不同的独立的抽象方法,即参数获取方法,供不同的子类实现;
当分页加载模式为按固定分页加载时,参数获取方法由子类divideA实现,设定需要获取的两个参数分别记为param1、param2,如图2所示,包括步骤如下:
A、在服务器端提供的资源池中,为全部资源进行分页标号;
B、客户端向服务器提出加载数据的请求时,同时向服务器发送当前客户端内容的页标号index,服务器根据收到的页标号index,将页标号index加1,即得到所需参数param1为index+1;每页所包含的数据子项数目size即为param2,服务器端根据参数按约定协议返回下一页的数据,如JSON格式,客户端通过回调函数获取下一页的数据后解析并显示在界面中。
当分页加载模式为从任一项起始加载时,参数获取方法由子类divideB实现,设定需要获取的两个参数分别记为param3、param4,如图3所示,包括步骤如下:
C、在服务器端提供的资源池中,服务器端为显示在ListView中的每一项内容分别进行标号;
D、客户端向服务器提出加载数据的请求时,同时向服务器发送当前客户端界面中的首项位置position,即得到所需参数param3为position+size1,得到所需参数param4为param3+size1-1,size1为每页所包含的数据子项数目,服务器端根据参数按约定协议返回下一页的数据,如JSON格式,客户端通过回调函数获取下一页的数据后解析并显示在界面中。
(3)封装加载数据抽象方法,在本方法中需要调用步骤(2)中的参数获取方法,将加载数据所需的参数传递到本步骤的方法中;
(4)实现具体的数据加载方法,即对步骤(3)中封装的加载数据抽象方法进行具体使用:先判断加载标志位状态,如果加载标志位状态为false状态时,则判定当前没有加载任务,调用步骤(3)中的加载数据抽象方法,同时将加载标志位置为true状态;否则,当加载标志位状态为true状态时,则判定当前有加载任务,不执行加载方法,也不返回任何数据;加载标志位是一个boolean类型的量,包括true状态和false状态两种状态,false状态表示当前没有加载线程执行,true状态表示当前已有加载线程正在运行;
(5)当加载结束时,判断是否成功加载新数据,如果成功,ListView的适配器会收到新数据,更新当前显示界面页标号参数,就是赋新值,更新为返回来的当前参数值,并返回本次加载所读取的新数据,并在客户端进行显示,同时将加载标志位置为false;如果加载失败,返回原来的页标号状态,即返回原状态。不影响下一次的加载请求。
上述步骤(3)至步骤(5)由抽象父类即divideBase类来实现。由此完成了客户端请求服务器端加载资源的通用逻辑封装。
上述参数param1、param2、param3、param4的计算方法由子类复写实现,父类中只提供抽象方法以供继承。
当应用程序的Activity中要使用ListView控件并进行分页加载时,只需要根据加载模式的不同实例化相应继承子类的对象,复写其加载方法并添加回调函数,完成加载过程,即可实现快速分页加载的操作。如果要使用其他加载模式,只需要实例化其他子类的对象即可,不必再重写相同的分页逻辑代码。如图4所示。
Claims (4)
1.一种Android***中ListView快速分页加载的方法,其特征在于,包括步骤如下:
(1)初始化起始状态;
(2)获取加载数据所需的参数,该参数用以确定所加载数据的位置,根据分页加载模式的不同,封装成不同的独立的抽象方法,即参数获取方法,供不同的子类实现;
(3)封装加载数据抽象方法,在本方法中需要调用步骤(2)中的参数获取方法,将加载数据所需的参数传递到本步骤的方法中;
(4)实现具体的数据加载方法,即对步骤(3)中封装的加载数据抽象方法进行具体使用:先判断加载标志位状态,如果加载标志位状态为false状态时,则判定当前没有加载任务,调用步骤(3)中的加载数据抽象方法,同时将加载标志位置为true状态;否则,当加载标志位状态为true状态时,则判定当前有加载任务,不执行加载方法,也不返回任何数据;加载标志位是一个boolean类型的量,包括true状态和false状态两种状态,false状态表示当前没有加载线程执行,true状态表示当前已有加载线程正在运行;
(5)当加载结束时,判断是否成功加载新数据,如果成功,ListView的适配器会收到新数据,更新当前显示界面页标号参数,并返回本次加载所读取的新数据,并在客户端进行显示,同时将加载标志位置为false;如果加载失败,返回原来的页标号状态,即返回原状态。
2.根据权利要求1所述的一种Android***中ListView快速分页加载的方法,其特征在于,上述步骤(3)至步骤(5)由抽象父类即divideBase类来实现。
3.根据权利要求1或2所述的一种Android***中ListView快速分页加载的方法,其特征在于,所述步骤(2),当分页加载模式为按固定分页加载时,参数获取方法由子类divideA实现,设定需要获取的两个参数分别记为param1、param2,包括步骤如下:
A、在服务器端提供的资源池中,为全部资源进行分页标号;
B、客户端向服务器提出加载数据的请求时,同时向服务器发送当前客户端内容的页标号index,服务器根据收到的页标号index,将页标号index加1,即得到所需参数param1为index+1;每页所包含的数据子项数目size即为param2,服务器端根据参数按约定协议返回下一页的数据,如JSON格式,客户端通过回调函数获取下一页的数据后解析并显示在界面中。
4.根据权利要求1或2所述的一种Android***中ListView快速分页加载的方法,其特征在于,所述步骤(2),当分页加载模式为从任一项起始加载时,参数获取方法由子类divideB实现,设定需要获取的两个参数分别记为param3、param4,包括步骤如下:
C、在服务器端提供的资源池中,服务器端为显示在ListView中的每一项内容分别进行标号;
D、客户端向服务器提出加载数据的请求时,同时向服务器发送当前客户端界面中的首项位置position,即得到所需参数param3为position+size1,得到所需参数param4为param3+size1-1,size1为每页所包含的数据子项数目,服务器端根据参数按约定协议返回下一页的数据,如JSON格式,客户端通过回调函数获取下一页的数据后解析并显示在界面中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710113352.1A CN106874010B (zh) | 2017-02-28 | 2017-02-28 | 一种Android***中ListView快速分页加载的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710113352.1A CN106874010B (zh) | 2017-02-28 | 2017-02-28 | 一种Android***中ListView快速分页加载的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106874010A true CN106874010A (zh) | 2017-06-20 |
CN106874010B CN106874010B (zh) | 2019-12-06 |
Family
ID=59169058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710113352.1A Active CN106874010B (zh) | 2017-02-28 | 2017-02-28 | 一种Android***中ListView快速分页加载的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106874010B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442406A (zh) * | 2018-05-02 | 2019-11-12 | 天津京东深拓机器人科技有限公司 | 分页控件处理数据的方法及分页控件、电子设备 |
CN111782304A (zh) * | 2020-07-21 | 2020-10-16 | 平安国际智慧城市科技股份有限公司 | 分页加载数据逻辑控制方法、装置、计算机设备及介质 |
CN113835790A (zh) * | 2020-06-23 | 2021-12-24 | 北京字节跳动网络技术有限公司 | 基于Android的分页页面显示方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103873897A (zh) * | 2014-03-21 | 2014-06-18 | 珠海迈科电子科技有限公司 | 一种Android智能电视UI分页显示方法 |
CN105608196A (zh) * | 2015-12-22 | 2016-05-25 | 国云科技股份有限公司 | 一种基于html碎片技术的分页方法 |
CN105740330A (zh) * | 2016-01-22 | 2016-07-06 | 腾讯科技(深圳)有限公司 | 分页展示数据的方法及装置 |
-
2017
- 2017-02-28 CN CN201710113352.1A patent/CN106874010B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103873897A (zh) * | 2014-03-21 | 2014-06-18 | 珠海迈科电子科技有限公司 | 一种Android智能电视UI分页显示方法 |
CN105608196A (zh) * | 2015-12-22 | 2016-05-25 | 国云科技股份有限公司 | 一种基于html碎片技术的分页方法 |
CN105740330A (zh) * | 2016-01-22 | 2016-07-06 | 腾讯科技(深圳)有限公司 | 分页展示数据的方法及装置 |
Non-Patent Citations (1)
Title |
---|
张亚杰: "基于Android平台的移动终端应用程序的研究与开发", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442406A (zh) * | 2018-05-02 | 2019-11-12 | 天津京东深拓机器人科技有限公司 | 分页控件处理数据的方法及分页控件、电子设备 |
CN113835790A (zh) * | 2020-06-23 | 2021-12-24 | 北京字节跳动网络技术有限公司 | 基于Android的分页页面显示方法和装置 |
CN113835790B (zh) * | 2020-06-23 | 2024-03-19 | 北京字节跳动网络技术有限公司 | 基于Android的分页页面显示方法和装置 |
CN111782304A (zh) * | 2020-07-21 | 2020-10-16 | 平安国际智慧城市科技股份有限公司 | 分页加载数据逻辑控制方法、装置、计算机设备及介质 |
CN111782304B (zh) * | 2020-07-21 | 2024-04-02 | 深圳赛安特技术服务有限公司 | 分页加载数据逻辑控制方法、装置、计算机设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106874010B (zh) | 2019-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109032722B (zh) | 更新ui组件的显示效果的方法、装置及设备、介质 | |
CN106775699B (zh) | 在异步线程中更新ui的方法及*** | |
CN110955499B (zh) | 处理器核心配置方法、装置、终端及存储介质 | |
CN109032587B (zh) | 一种数据流管理框架、方法、终端设备及存储介质 | |
WO2017107851A1 (zh) | 一种桌面应用组件发布、更新方法及装置 | |
CN106874010A (zh) | 一种Android***中ListView快速分页加载的方法 | |
US20190294450A1 (en) | Method for Interface Refresh Synchronization,Terminal Device, and Non-Transitory Computer-Readable Storage Medium | |
CN105871911A (zh) | 一种服务调用引擎、方法及*** | |
CN111182019A (zh) | 跨平台通信方法及装置、电子设备 | |
US11520473B2 (en) | Switch control for animations | |
CN112559172A (zh) | 网页浏览器内存优化方法、***、设备及存储介质 | |
CN112307377A (zh) | 信息展示方法、装置及电子设备 | |
CN114489910B (zh) | 一种视频会议数据显示方法、装置、设备及介质 | |
US10628179B2 (en) | Universal graphical user interface objects | |
CN103914289A (zh) | 一种桌面应用程序的接入方法和装置 | |
CN113672225A (zh) | 用户界面的处理方法、装置、设备及存储介质 | |
CN112711728A (zh) | 页面布局框架、页面加载方法、装置、设备及存储介质 | |
CN107589978B (zh) | 一种Flash中页面刷新方法及装置 | |
CN112860454B (zh) | 业务处理***及方法 | |
CN115033282B (zh) | 一种充电桩运营平台兼容方法、装置、设备、存储介质 | |
CN114942759A (zh) | 组件动画显示方法、组件动画显示装置、介质及电子设备 | |
CN115712428A (zh) | 一种医学影像浏览方法、装置、设备、存储介质 | |
CN117453316A (zh) | 一种应用程序动态换肤方法和装置 | |
CN116679918A (zh) | 业务处理方法、装置、设备、***及可读存储介质 | |
CN116126306A (zh) | 对象属性编辑方法、装置、电子设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |