首页> 中国专利> 一种列表中不同样式内容混搭加载的实现方法及系统

一种列表中不同样式内容混搭加载的实现方法及系统

摘要

本发明公开了一种列表中不同样式内容混搭加载的实现方法及系统,涉及安卓系统中列表样式混搭加载技术领域。该方法包括:构建数据视图关联缓存;根据不同样式,编写对应的数据类型、数据视图和数据视图容器;为每种样式编写对应的关联解析器,将编写好的关联解析器逐一添加至数据视图关联缓存中,并指定其下标为其数据类型的哈希码;当列表要显示各种数据时逐一取出每条数据,每取出一条数据后,根据数据的数据类型哈希码得到对应的关联解析器,利用关联解析器依次创建数据视图、数据视图容器,并将数据填入创建的视图容器中并显示。本发明能在实现不同样式内容混搭加载的同时,极大简化代码量,提升开发效率和运行效率,降低混搭加载的错误率。

著录项

  • 公开/公告号CN105956145A

    专利类型发明专利

  • 公开/公告日2016-09-21

    原文格式PDF

  • 申请/专利权人 武汉斗鱼网络科技有限公司;

    申请/专利号CN201610315938.1

  • 发明设计人 霍启圣;

    申请日2016-05-12

  • 分类号G06F17/30(20060101);

  • 代理机构武汉智权专利代理事务所(特殊普通合伙);

  • 代理人沈林华

  • 地址 430000 湖北省武汉市东湖开发区软件园东路1号软件产业4.1期B1栋11楼

  • 入库时间 2023-06-19 00:30:14

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-17

    授权

    授权

  • 2016-10-19

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20160512

    实质审查的生效

  • 2016-09-21

    公开

    公开

说明书

技术领域

本发明涉及安卓系统中列表样式混搭加载技术领域,具体来讲是一种列表中不同样式内容混搭加载的实现方法及系统。

背景技术

安卓系统中的大部分应用程序都存在列表页面,列表页面能排列显示多条数据。如图1所示,一个列表页面以从上到下排列的方式能显示7条数据。

列表是一种通用控件,由列表视图、列表适配器、数据视图和数据视图容器组成。其中,列表视图是一种视图容器,它从列表适配器中获得数据,创建数据视图后把数据填入其中,再把数据视图排列显示在自身中,如果数据视图过多,显示不完全,用户可以通过触摸滑动操作来上下滑动列表,显示出更多数据视图。列表适配器是一种数组,它储存列表将要显示的数据。数据视图是开发者编写的一种视图,用来显示数据。数据视图容器是与列表视图关联的控制代码,如:列表适配器中储存的是图片网址,则数据视图应当是图片视图,列表从适配器中读取图片网址后,交给数据视图容器,数据视图容器访问网络加载图片的二进制数据,再填充入图片视图解码显示出来。

目前,安卓系统自带的列表视图通常用来显示单一样式的数据,如图1所示。但假如要在同一个列表内显示复杂样式的混合数据(如图2所示),则需要通过编写大量额外的代码来实现以下操作:

1、为每一种样式对应一种数据类型,如图2中有3种不同样式: “幻灯”、“缩略图”和“概要”,则需要对应三种数据类型;

2、为每一种数据类型对应一种数据视图;

3、为每一种数据视图对应一种数据视图容器;

4、因为适配器中不同样式的储存顺序是未知的,需要逐一判断每一条数据的类型;

5、因为数据类型是不固定的,需要根据不同数据类型创建对应的数据视图;

6、因为数据视图是不固定的,需要根据不同的数据视图创建对应的数据视图容器;

7、因为数据视图容器是不固定的,需要把不同的数据填充入对应的数据容器视图。

在上述操作中,步骤1至步骤3是所有列表加载方式中都必须实现的,代码编写也相对较易。但步骤4至步骤7非常繁琐,需要循环判断数据类型的操作较多(如图3所示)。开发者自行编写代码时,由于判断数据类型时需要使用if/else或switch语句逐一判断,且需要混搭加载的样式越多,进行数据类型判断的代码量就会呈指数般增长。这无疑导致代码量过于庞大,编写过程繁琐,降低了开发效率和运行效率;并且由于过多的数据类型判断操作,还增加了内容混搭加载时的出错几率。

发明内容

本发明的目的是为了克服上述背景技术的不足,提供一种列表中不同样式内容混搭加载的实现方法及系统,能在实现不同样式内容混搭加载的同时,极大简化代码量,提升开发效率和运行效率,降低混搭加载的错误率。

为达到以上目的,本发明提供一种列表中不同样式内容混搭加载 的实现方法,包括以下步骤:

A、构建用于存放各种关联解析器的数据视图关联缓存;

B、根据不同样式,编写对应的数据类型、数据视图和数据视图容器;

C、为每种样式编写对应的关联解析器;将编写好的关联解析器逐一添加至所述数据视图关联缓存中,并指定关联解析器的下标为其数据类型的哈希码,该数据类型的哈希码在内存中具有唯一数值;

D、当列表要显示各种数据时,从列表适配器中逐一取出每条数据;每取出一条数据后,根据该数据的数据类型的哈希码得到对应的关联解析器,利用得到关联解析器依次创建数据视图、数据视图容器,并将该条数据填入创建的数据视图容器中并显示。

在上述技术方案的基础上,所述关联解析器用于根据数据类型推导出关联的数据视图和数据视图容器。

在上述技术方案的基础上,步骤B中所述不同样式具体包括三种样式:“幻灯”样式、“缩略图”样式和“概要”样式。

在上述技术方案的基础上,步骤C中所述为每种样式编写对应的关联解析器,具体包括以下操作:

当编写“幻灯”样式对应的关联解析器时,为该关联解析器编写以下关联规则:“幻灯”样式的数据类型为“字符串”、数据视图为“图片视图”、数据视图容器为“图片加载容器”,数据视图容器行为是“从网络加载数据至图片”;

当编写“缩略图”样式对应的关联解析器时,为该关联解析器编写以下关联规则:“缩略图”样式的数据类型为缩略图对应的Java对象,数据视图为“复合图片、文字视图”、数据视图容器为“复合容器”,数据视图容器行为是“从Java对象中取出缩略图片网址并让内 部的图片视图从网络加载数据至本地图片,从Java对象中取出缩略图描述并填入内部的文本视图”;

当编写“概要”样式对应的关联解析器时,为该关联解析器编写以下关联规则:“概要”样式的数据类型为概要对应的Java对象,数据视图为“复合图片、文字视图”、数据视图容器为“复合容器”,数据视图容器行为是“从Java对象中取出概要图片网址并让内部的图片视图从网络加载数据至本地图片,从Java对象中取出概要标题并填入内部的文本视图”。

在上述技术方案的基础上,步骤D具体包括以下操作:D1、判断列表适配器中是否有待显示的数据,若是,转入步骤D2;否则,结束;D2、从列表适配器中顺序取出一条数据;通过调用系统Java函数hashcode(),获得该条数据的数据类型的哈希码;根据所述哈希码从数据视图关联缓存中获得与该条数据对应的关联解析器,转入步骤D3;D3、利用获得的关联解析器直接创建数据视图,转入步骤D4;D4、利用获得的关联解析器直接创建数据视图容器,转入步骤D5;D5、利用获得的关联解析器将该条数据填入创建的数据视图容器中并显示,返回步骤D1。

本发明还提供一种列表中不同样式内容混搭加载的实现系统,包括数据视图关联缓存构建单元、数据参数编写单元、关联解析器编写单元和内容混搭加载单元;所述数据视图关联缓存构建单元用于:构建数据视图关联缓存,该数据视图关联缓存用于存放不同的关联解析器;所述数据参数编写单元用于:根据不同样式,编写对应的数据类型、数据视图和数据视图容器;所述关联解析器编写单元用于:为每种样式编写对应的关联解析器;将编写好的关联解析器逐一添加至所述数据视图关联缓存中,并指定关联解析器的下标为其数据类型的哈 希码,该数据类型的哈希码在内存中具有唯一数值;所述内容混搭加载单元用于:当列表要显示各种数据时,从列表适配器中逐一取出每条数据;每取出一条数据后,根据该数据的数据类型的哈希码得到对应的关联解析器,利用得到关联解析器依次创建数据视图、数据视图容器,并将该条数据填入创建的数据视图容器中并显示。

在上述技术方案的基础上,所述关联解析器编写单元编写的关联解析器用于根据数据类型推导出关联的数据视图和数据视图容器。

在上述技术方案的基础上,所述数据参数编写单元根据三种不同样式:“幻灯”样式、“缩略图”样式和“概要”样式,编写对应的数据类型、数据视图和数据视图容器。

在上述技术方案的基础上,所述关联解析器编写单元为每种样式编写对应的关联解析器的具体过程如下:

当编写“幻灯”样式对应的关联解析器时,关联解析器编写单元为该关联解析器编写以下关联规则:“幻灯”样式的数据类型为“字符串”、数据视图为“图片视图”、数据视图容器为“图片加载容器”,数据视图容器行为是“从网络加载数据至图片”;

当编写“缩略图”样式对应的关联解析器时,关联解析器编写单元为该关联解析器编写以下关联规则:“缩略图”样式的数据类型为缩略图对应的Java对象,数据视图为“复合图片、文字视图”、数据视图容器为“复合容器”,数据视图容器行为是“从Java对象中取出缩略图片网址并让内部的图片视图从网络加载数据至本地图片,从Java对象中取出缩略图描述并填入内部的文本视图”;

当编写“概要”样式对应的关联解析器时,关联解析器编写单元为该关联解析器编写以下关联规则:“概要”样式的数据类型为概要对应的Java对象,数据视图为“复合图片、文字视图”、数据视图容 器为“复合容器”,数据视图容器行为是“从Java对象中取出概要图片网址并让内部的图片视图从网络加载数据至本地图片,从Java对象中取出概要标题并填入内部的文本视图”。

在上述技术方案的基础上,所述内容混搭加载单元包括数据判断子单元、关联解析器选择子单元、数据视图创建子单元、数据视图容器创建子单元和数据显示子单元;

所述数据判断子单元用于:当列表要显示各种数据时或收到判断信号后,判断列表适配器中是否有待显示的数据,若有,向关联解析器选择子单元发送选择信号;否则,结束;

所述关联解析器选择子单元用于:收到选择信号后,从列表适配器中顺序取出一条数据;通过调用系统Java函数hashcode(),获得该条数据的数据类型的哈希码;根据所述哈希码从数据视图关联缓存中获得与该条数据对应的关联解析器,向数据视图创建子单元发送数据视图创建信号;

所述数据视图创建子单元用于:收到数据视图创建信号后,利用所述关联解析器选择子单元获得的关联解析器直接创建数据视图,并向数据视图容器创建子单元发送数据视图容器创建信号;

所述数据视图容器创建子单元用于:收到数据视图容器创建信号后,利用获得的关联解析器直接创建数据视图容器,并向数据显示子单元发送显示信号;

所述数据显示子单元用于:收到显示信号后,利用获得的关联解析器将该条数据填入创建的数据视图容器中并显示,向数据判断子单元发送判断信号。

本发明的有益效果在于:

本发明中,为列表中的不同样式编写了对应的关联解析器,该关 联解析器能根据数据类型直接推导出关联的数据视图和数据视图容器,进而实现快速创建视图、视图容器,并将条数据填入创建的视图容器中并显示的目的。并且,该关联解析器添加至数据视图关联缓存时,会指定其下标为其数据类型的哈希码,该数据类型的哈希码在内存中具有唯一数值;当列表要显示各种不同样式的数据时,能根据每条数据的数据类型哈希码快速得到对应的关联解析器,利用关联解析器实现列表中不同样式内容的混搭加载显示。

与现有技术相比,本发明在显示各种不同样式的数据时,直接通过访问数据的数据类型的哈希码即可对应到相应的关联解析器,无需像现有技术一样通过if/else或switch语句对每条数据的类型进行逐一判断,速度极快;加之利用关联解析器实现列表中不同样式内容的混搭加载显示,可极大简化代码量,提升开发效率和运行效率,进而降低不同内容混搭加载时的错误率。

附图说明

图1为列表中显示单一样式的示意图;

图2为列表中显示混合样式的示意图;

图3为现有的列表加载方式的流程图;

图4为本发明实施例中列表中不同样式内容混搭加载的实现方法的流程图;

图5为本发明实施例中列表中不同样式内容混搭加载的实现系统的结构框图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步的详细描述。

参见图4所示,本发明实施例提供一种列表中不同样式内容混搭 加载的实现方法,包括以下步骤:

步骤S1:构建一个数据视图关联缓存,该数据视图关联缓存用于存放不同的关联解析器,转入步骤S2。

可以理解的是,关联解析器是一种类似流程图的抽象存在,它能够将各种事物串联起来,指明一个清晰的流程。例如,需要从A(包含A0至A9)、B(包含B0至B9)、C(包含C0至C9)三种不同的类别中,分别获得三个事物;因为每种类别下都有10个事物,共有30个不同的事物,导致选择分支繁多。现创建一个关联解析器,规定结果为(A0→B1→C2),那么根据这个解析器,A0、B1、C2三个事物互相关联,从A0、B1、C2任意一个事物都能推导出关联的其他两个事物。

对于本发明而言,数据类型如同A、数据视图如同B、数据视图容器行为如同C,所述关联解析器根据数据类型可以直接推导出关联的数据视图和数据视图容器。

步骤S2:根据不同样式,编写对应的数据类型、数据视图和数据视图容器,即编写数据类型、数据视图和数据视图容器的相应代码,转入步骤S3。本发明实施例中,进行混搭加载的不同样式一共有三种:“幻灯”、“缩略图”和“概要”,每种样式均需要对应编写独立的数据视图和数据视图容器。

步骤S3:为每种样式编写对应的关联解析器,转入步骤S4。实际操作时,步骤S3中为每种样式编写对应的关联解析器的具体操作如下:

编写“幻灯”样式对应的关联解析器时,为该关联解析器编写以下关联规则:“幻灯”样式的数据类型为“字符串”、数据视图为“图片视图”、数据视图容器为“图片加载容器”,数据视图容器行为是“从 网络加载数据至图片”;

编写“缩略图”样式对应的关联解析器时,为该关联解析器编写以下关联规则:“缩略图”样式的数据类型为缩略图对应的Java对象,数据视图为“复合图片、文字视图”、数据视图容器为“复合容器”,数据视图容器行为是“从Java对象中取出缩略图片网址并让内部的图片视图从网络加载数据至本地图片,从Java对象中取出缩略图描述并填入内部的文本视图”;

编写“概要”样式对应的关联解析器时,为该关联解析器编写以下关联规则:“概要”样式的数据类型为概要对应的Java对象,数据视图为“复合图片、文字视图”、数据视图容器为“复合容器”,数据视图容器行为是“从Java对象中取出概要图片网址并让内部的图片视图从网络加载数据至本地图片,从Java对象中取出概要标题并填入内部的文本视图”。

步骤S4:将编写好的关联解析器逐一添加至所述数据视图关联缓存中,并指定关联解析器的下标为其数据类型的哈希码,转入步骤S5。可以理解的是,数据类型的哈希码在内存中是具有唯一数值的,因此,无论数据内容如何,只要数据类型相同,哈希码一定相同。通过该哈希码能快速判断数据类型。

步骤S5:当列表要显示各种数据时,先判断列表适配器中是否有待显示的数据,若是,转入步骤S6;否则,结束。

步骤S6:从列表适配器中顺序取出一条数据;通过调用系统Java函数hashcode(),获得该条数据的数据类型的哈希码;根据哈希码直接从所述数据视图关联缓存中获得与该条数据对应的关联解析器,转入步骤S7。

步骤S7:利用获得的关联解析器直接创建数据视图,即创建数 据视图的实体对象,此时无需再做任何有关类型的判断,转入步骤S8。具体操作时,假设从列表适配器中取出的数据的样式为“幻灯”,则根据“幻灯”的关联解析器,其数据视图必定为“图片视图”,则直接创建图片视图即可。其他样式类型同理,此处不赘述。

步骤S8:利用获得的关联解析器直接创建数据视图容器,即创建数据视图容器的实体对象,此时无需再做任何有关类型的判断,转入步骤S9。具体操作时,假设从列表适配器中取出的数据的样式为“幻灯”,则根据“幻灯”的关联解析器,其数据视图容器并定为“图片加载容器”,则直接创建图片加载容器即可。其他样式类型同理,此处不赘述。

步骤S9:利用获得的关联解析器将该条数据填入创建的数据视图容器中并显示,此时无需再做任何有关类型的判断,返回步骤S5,进行下一条数据的显示,直至所有待显示的数据都显示完毕,结束。具体操作时,假设从列表适配器中取出的数据的样式为“幻灯”,则根据“幻灯”的关联解析器,其数据视图容器行为必定是“从网络加载数据至图片”,则直接根据该行为直接进行调用即可。其他样式类型同理,此处不赘述。

参见图5所示,本发明实施例还提供一种列表中不同样式内容混搭加载的实现系统,包括数据视图关联缓存构建单元、数据参数编写单元、关联解析器编写单元和内容混搭加载单元。

其中,所述数据视图关联缓存构建单元用于:构建数据视图关联缓存,该数据视图关联缓存用于存放不同的关联解析器。

所述数据参数编写单元用于:根据不同样式,编写对应的数据类型、数据视图和数据视图容器。

所述关联解析器编写单元用于:为每种样式编写对应的关联解析 器;将编写好的关联解析器逐一添加至所述数据视图关联缓存中,并指定关联解析器的下标为其数据类型的哈希码,该数据类型的哈希码在内存中具有唯一数值。

所述内容混搭加载单元用于:当列表要显示各种数据时,从列表适配器中逐一取出每条数据;每取出一条数据后,根据该数据的数据类型的哈希码得到对应的关联解析器,利用得到关联解析器依次创建数据视图、数据视图容器,并将该条数据填入创建的数据视图容器中并显示。

进一步地,参见图5所示,所述内容混搭加载单元包括数据判断子单元、关联解析器选择子单元、数据视图创建子单元、数据视图容器创建子单元和数据显示子单元。

所述数据判断子单元用于:当列表要显示各种数据时或收到判断信号后,判断列表适配器中是否有待显示的数据,若有,向关联解析器选择子单元发送选择信号;否则,结束。

所述关联解析器选择子单元用于:收到选择信号后,从列表适配器中顺序取出一条数据;通过调用系统Java函数hashcode(),获得该条数据的数据类型的哈希码;根据所述哈希码从数据视图关联缓存中获得与该条数据对应的关联解析器,向数据视图创建子单元发送数据视图创建信号。

所述数据视图创建子单元用于:收到数据视图创建信号后,利用所述关联解析器选择子单元获得的关联解析器直接创建数据视图,并向数据视图容器创建子单元发送数据视图容器创建信号。

所述数据视图容器创建子单元用于:收到数据视图容器创建信号后,利用获得的关联解析器直接创建数据视图容器,并向数据显示子单元发送显示信号。

所述数据显示子单元用于:收到显示信号后,利用获得的关联解析器将该条数据填入创建的数据视图容器中并显示,向数据判断子单元发送判断信号。

需要说明的是:上述实施例提供的列表中不同样式内容混搭加载的实现系统在进行混搭加载时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号