CN106874010B - 一种Android系统中ListView快速分页加载的方法 - Google Patents

一种Android系统中ListView快速分页加载的方法 Download PDF

Info

Publication number
CN106874010B
CN106874010B CN201710113352.1A CN201710113352A CN106874010B CN 106874010 B CN106874010 B CN 106874010B CN 201710113352 A CN201710113352 A CN 201710113352A CN 106874010 B CN106874010 B CN 106874010B
Authority
CN
China
Prior art keywords
loading
data
listview
paging
server
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.)
Active
Application number
CN201710113352.1A
Other languages
English (en)
Other versions
CN106874010A (zh
Inventor
张海霞
坚传辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong University
Original Assignee
Shandong University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong University filed Critical Shandong University
Priority to CN201710113352.1A priority Critical patent/CN106874010B/zh
Publication of CN106874010A publication Critical patent/CN106874010A/zh
Application granted granted Critical
Publication of CN106874010B publication Critical patent/CN106874010B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction 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/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution 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快速分页加载的方法
技术领域
本发明涉及一种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)中的参数获取方法,将加载数据所需的参数传递到本步骤的方法中;本步骤的方法是指步骤(3)中的加载数据抽象方法;
(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格式,客户端通过回调函数获取下一页的数据后解析并显示在界面中。
CN201710113352.1A 2017-02-28 2017-02-28 一种Android系统中ListView快速分页加载的方法 Active CN106874010B (zh)

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 CN106874010A (zh) 2017-06-20
CN106874010B true 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)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110442406B (zh) * 2018-05-02 2022-08-12 北京京东乾石科技有限公司 分页控件处理数据的方法及分页控件、电子设备
CN113835790B (zh) * 2020-06-23 2024-03-19 北京字节跳动网络技术有限公司 基于Android的分页页面显示方法和装置
CN111782304B (zh) * 2020-07-21 2024-04-02 深圳赛安特技术服务有限公司 分页加载数据逻辑控制方法、装置、计算机设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
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 腾讯科技(深圳)有限公司 分页展示数据的方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
基于Android平台的移动终端应用程序的研究与开发;张亚杰;《中国优秀硕士学位论文全文数据库》;20131115;全文 *

Also Published As

Publication number Publication date
CN106874010A (zh) 2017-06-20

Similar Documents

Publication Publication Date Title
AU2019233201B2 (en) Resource configuration method and apparatus, terminal, and storage medium
KR102431773B1 (ko) 애플리케이션 컨테이너를 사용한 코드 및 종속 데이터의 전달 관리
US8887082B2 (en) Method and system for realizing message interactions in a multi-tabs application
CN106874010B (zh) 一种Android系统中ListView快速分页加载的方法
CN106775699B (zh) 在异步线程中更新ui的方法及系统
CN109840115A (zh) 一种Android系统中RecyclerView分页加载方法及装置
WO2020063040A1 (zh) 处理器核心配置方法、装置、终端及存储介质
WO2019201340A1 (zh) 处理器核心调度方法、装置、终端及存储介质
TW201826102A (zh) 應用運行方法及裝置
CN112035198A (zh) 主页加载方法、电视和存储介质
CN111090823A (zh) 一种页面应用的集成平台以及应用访问方法、装置和设备
WO2023040584A1 (zh) 设备数据的处理方法、装置、电子设备以及存储介质
CN115309516A (zh) 一种应用生命周期的检测方法、装置及计算机设备
EP3407186B1 (en) Interface refresh synchronization method and apparatus, terminal, and storage medium
CN113778280B (zh) 一种Linux兼容Android的显示消息通知方法及装置
CN109086115B (zh) Android动画执行方法、装置、终端及可读介质
CN113296758A (zh) 一种前端组件库构建方法、装置及存储介质
CN112559172A (zh) 网页浏览器内存优化方法、系统、设备及存储介质
CN108804088B (zh) 协议处理方法和装置
CN108009226B (zh) 基于智能终端应用的推广内容展示实现方法及智能终端
CN106375190B (zh) 一种即时通讯软件界面拆分与合并的显示方法及系统
CN114377393A (zh) 用于对游戏对象的显示控制方法、装置、设备及介质
CN109062620B (zh) Android帧动画执行方法、装置、终端及可读介质
CN107589978B (zh) 一种Flash中页面刷新方法及装置
CN111198740B (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