发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种滚动列表展现系统和相应的滚动列表展现方法。
依据本发明的一个方面,提供了一种滚动列表展现系统,所述系统包括:
条目分组模块,适于将滚动列表中的条目分组,得到至少一个条目组,每个条目组包括多个条目;
输入接口,适于接收外部输入的位置信息;
数据获取模块,适于根据输入的位置信息确定待展现的条目组,获取待展现的条目组中各个条目对应的数据;
视图调用模块,适于调用包含多个子视图的视图容器,所述多个子视图与待展现的条目组中条目一一对应,将待展现的条目组中各个条目的数据装入对应的子视图中;
视图展现模块,适于按待展现的条目组对应版式排列视图容器中子视图,展现排列后的视图容器;
其中,所述视图调用模块进一步适于:将待展现的条目组中各个条目的数据输入对应的子视图,在子视图中根据输入的数据设置并排列所述条目的视图元素。
可选地,所述输入的位置信息为待展现的条目组的索引号,
所述数据获取模块进一步包括:
条目索引号确定子模块,适于根据待展现的条目组的索引号确定该条目组中各个条目的索引号;
条目数据提取子模块,适于根据各个条目的索引号提取各个条目对应的数据。
可选地,所述条目分组模块进一步适于:将滚动列表中条目按从前到后的顺序分组,其中,每n个条目为一组,n为预设的条目数;
所述条目索引号确定子模块进一步适于:由所述预设的条目数和待展现的条目组的索引号计算出该条目组中各个条目的索引号。
可选地,所述视图调用模块进一步适于:创建包含多个子视图的视图容器,调用创建的视图容器;
或者,
所述视图调用模块进一步适于:调用已经释放的包含多个子视图的视图容器。
根据本发明的另一方面,提供了一种滚动列表展现方法,所述方法包括:
将滚动列表中的条目分组,得到至少一个条目组,每个条目组包括多个条目;
根据输入的位置信息确定待展现的条目组,获取待展现的条目组中各个条目对应的数据;
调用包含多个子视图的视图容器,所述多个子视图与待展现的条目组中条目一一对应,将待展现的条目组中各个条目的数据输入对应的子视图,在子视图中根据输入的数据设置并排列所述条目的视图元素;
按待展现的条目组对应版式排列视图容器中的子视图,展现排列后的视图容器。
可选地,所述输入的位置信息为待展现的条目组的索引号,
所述获取待展现的条目组中各个条目对应的数据进一步包括:
根据待展现的条目组的索引号确定该条目组中各个条目的索引号;
根据各个条目的索引号提取各个条目对应的数据。
可选地,所述将滚动列表中的条目分组进一步包括:
将滚动列表中的条目按从前到后的顺序分组,其中,每n个条目为一组,n为预设的条目数;
所述根据待展现的条目组的索引号确定该条目组中各个条目的索引号进一步包括:
由所述预设的条目数和待展现的条目组的索引号计算出该条目组中各个条目的索引号。
可选地,所述调用包含多个子视图的视图容器进一步包括:
创建包含多个子视图的视图容器,调用创建的视图容器;
或者,
调用已经释放的包含多个子视图的视图容器。
根据本发明的技术方案,通过将滚动列表中的条目分组,调用包含多个子视图的视图容器,将待展现的条目组中各个条目的数据装入对应的子视图中,按待展现的条目组对应版式排列视图容器中的子视图,展现排列后的视图容器,可以将滚动列表中的条目按多种版式展现,并且使用视图容器使得容易实现多种版式展现,由此解决了展现方式单一,对于复杂数据信息类型,展现实现难度增大,并由此增加开发成本的问题,取得了将复杂数据信息类型进行多样化展现,并且容易实现,节约开发成本的有益效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
参见图1,示出了根据本发明一个实施例的滚动列表展现系统的结构图。本实施例中系统10包括:条目分组模块100、数据获取模块200、视图调用模块300、视图展现模块400和输入接口500。该系统10可以位于移动终端、计算机终端等终端设备。
条目分组模块100,适于将滚动列表中的条目分组,得到至少一个条目组,每个条目组包括多个条目。
举例而言,条目分组模块100可以将滚动列表中条目按从前到后的顺序分组,其中,每n个条目为一组,n为预设的条目数。例如,滚动列表中总共有700条数据信息,即条目为700条,预设的条目数n为10,则700/10=70,将条目按从前到后的顺序分为70个条目组,每个条目组中为10个条目。
上述举例中,各个条目组中的条目数量相同,也可以通过其他方式进行分组。例如,通过配置分组数量列表的方式,在列表中配置各个条目组中条目的数量,按该分组数量列表将条目分组,由此分组后的各个条目组中的条目可以各不相同。
输入接口500,适于接收外部输入的位置信息。
数据获取模块200,适于根据输入的位置信息确定待展现的条目组,获取待展现的条目组中各个条目对应的数据。
参见图2,示出了根据本发明一个实施例的数据获取模块200的结构图。其中,输入的位置信息为待展现的条目组的索引号。数据获取模块200进一步包括:条目索引号确定子模块210和条目数据提取子模块220。
条目索引号确定子模块210,适于根据待展现的条目组的索引号确定该条目组中各个条目的索引号。
举例而言,如果条目分组时,按预设的条目数n进行分组,则各个条目组中条目数量相同。条目索引号确定子模块210由预设的条目数和待展现的条目组的索引号计算出该条目组中各个条目的索引号。例如,预设的条目数n为10,待展现的条目组的索引号为10,则10×10=100,100为待展现的条目的索引范围的起始索引号,100+10-1=109,109为待展现的条目的索引范围的结束索引号。
如果按分组数量列表进行分组,则条目索引号确定子模块210可以由分组数量列表和待展现的条目组的索引号计算出该条目组中各个条目的索引号。即将分组数量列表中待展现的条目组的索引号前的各个条目组中条目数量相加,得到待展现的条目的索引范围的起始索引号,该起始索引号与本条目组中条目数量相加得到待展现的条目的索引范围的结束索引号。
条目数据提取子模块220,适于根据各个条目的索引号提取各个条目对应的数据。例如,通过安卓中滚动列表的适配类Adapter的接口getView()获得条目对应的数据。具体而言,调用ListView中接口setAdapter (ListAdapteradapter),将ListView与适配类Adapter绑定,创建待展现的滚动列表的Adapter。将条目组中条目的索引号输入Adapter的接口getView(),获得该条目对应的数据信息。
视图调用模块300,适于调用包含多个子视图的视图容器,该多个子视图与待展现的条目组中条目一一对应,将待展现的条目组中各个条目的数据装入对应的子视图中。
视图调用模块300可以通过多种方式调用视图容器。例如,视图调用模块300创建包含多个子视图的视图容器,调用创建的视图容器。又例如,视图调用模块300调用已经释放的包含多个子视图的视图容器。
此外,视图调用模块300在展现子视图时,将待展现的条目组中各个条目的数据输入对应的子视图,在子视图中根据输入的数据设置并排列所述条目的视图元素。
视图展现模块400,适于按待展现的条目组对应版式排列视图容器中子视图,展现排列后的视图容器。
由上可见,本实施例中技术方案能够将滚动列表中的条目按多种版式展现,并且使用视图容器使得容易实现多种版式展现,由此解决了展现方式单一,对于复杂数据信息类型,展现实现难度增大,并由此增加开发成本的问题,取得了将复杂数据信息类型进行多样化展现,并且容易实现,节约开发成本的有益效果。
参见图3,示出了根据本发明一个实施例的展现的滚动列表的示意图。在本实施例中,对条目组采用三种不同的版式进行展现。本实施例中滚动条目中总共500个条目,每5个条目为一组。
在本实施例中,基于安卓平台中ListView和Adapter来展现数量较大的数据条目。调用ListView中接口setAdapter(ListAdapter adapter),将ListView与适配类Adapter绑定,创建待展现的滚动列表的Adapter。自定义Adapter,实现针对条目组的Adapter中接口getCount()和getView()。
接口getCount()的返回值不再为现有技术中的条目数量,而是待展现的滚动列表中的条目组数量。具体实现为,getCount()的返回值为条目总数/预设的条目数n,例如500/5=100。
接口getView()的返回的条目视图不再为一个条目的数据信息的视图,而是某个位置上的条目组的视图。getView()所返回的视图为包含多个子视图的视图容器,视图容器中子视图按待展现的条目组对应版式排列。具体实现如下所述。
条目分组模块100将滚动列表中的500个条目分组,分为100个条目组,每个条目组包括5个条目。
输入接口500接收外部输入的位置信息,该位置信息为请求的条目组的索引号index。
数据获取模块200根据所请求的条目组的索引号index和预设的条目数计算出该条目组中条目索引号的范围。例如index为10,则条目组中条目的索引号范围的起始索引号为10×5=50,结束索引号为50+5-1=54,共5个条目,即5条数据信息。数据获取模块200根据请求的条目组中各个条目的索引号提取各个条目对应的数据。
视图调用模块300创建或重用显示整个条目组中数据信息的视图容器,该视图容器中包含待显示的条目组数据信息所对应的所有子视图。例如每组5条数据信息,则返回的视图容器将包含5个子视图,与条目组中5条数据信息一一对应。将该组数据信息分别装入到各自所对应的子视图中,每个子视图内部可根据数据信息的特性设定视图元素的数量和布局。
视图展现模块400按待展现的条目组对应版式排列视图容器中子视图,展现排列后的视图容器。本实施例中条目信息的展示效果如图3所示,待展现的条目组分别对应3种不同的版式。第一组数据信息对应的视图容器采用第一套版式,第二组数据信息对应的视图容器采用第二套版式,第三组数据信息对应的视图容器采用第三套版式。之后,第四组数据信息对应的视图容器再次采用第一套版式,如此循环,使得各组数据信息以不同版式展现。
本实施例中,可以基于ListView和Adapter来展现数量较大的数据条目,即以ListView或者从ListView派生出的控件类作为视图容器,配合使用重新实现的Adapter中接口getCount()和getView()来提供条目组的数量和视图。其不同于现有技术中条目与数据信息一一对应的展现方式,将数据信息按几个一组分成若干组,每组数据信息与滚动列表中一个条目组相对应,此条目组与ListView中ListView Item对应。在每一个条目组内部,对各个条目对应的数据信息的视图进行自定义排序,已达到不同于现有技术中视图中数据信息仅能纵向排列的更加多样的布局。并且,此实现方式可以基于已有接口实现,实现简单,节约了开发成本。
参见图4,示出了根据本发明一个实施例的滚动列表展现方法的流程图。本实施例中方法包括如下步骤。
步骤S410,将滚动列表中的条目分组,得到至少一个条目组,每个条目组包括多个条目。
举例而言,步骤S410进一步包括:将滚动列表中条目按从前到后的顺序分组,其中,每n个条目为一组,n为预设的条目数。例如,滚动列表中总共有700条数据信息,即条目为700条,预设的条目数n为10,则700/10=70,将条目按从前到后的顺序分为70个条目组,每个条目组中为10个条目。
上述举例中,各个条目组中的条目数量相同,也可以通过其他方式进行分组。例如,通过配置分组数量列表的方式,在列表中配置各个条目组中条目的数量,按该分组数量列表将条目分组,由此分组后的各个条目组中的条目可以各不相同。
步骤S420,根据输入的位置信息确定待展现的条目组,获取待展现的条目组中各个条目对应的数据。
进一步地,输入的位置信息为待展现的条目组的索引号。参见图5,为本发明实施例中获取待展现的条目组中各个条目对应的数据的流程图,其中进一步包括如下步骤。
步骤S4210,根据待展现的条目组的索引号确定该条目组中各个条目的索引号。
步骤S4220,根据各个条目的索引号提取各个条目对应的数据。
举例而言,如果条目分组时,按预设的条目数n进行分组,则各个条目组中条目数量相同。步骤S4210进一步包括:由预设的条目数和待展现的条目组的索引号计算出该条目组中各个条目的索引号。例如,预设的条目数n为10,待展现的条目组的索引号为10,则10×10=100,100为待展现的条目的索引范围的起始索引号,100+10-1=109,109为待展现的条目的索引范围的结束索引号。
如果按分组数量列表进行分组,则步骤S4210进一步包括:由分组数量列表和待展现的条目组的索引号计算出该条目组中各个条目的索引号。即将分组数量列表中待展现的条目组的索引号前的各个条目组中条目数量相加,得到待展现的条目的索引范围的起始索引号,该起始索引号与本条目组中条目数量相加得到待展现的条目的索引范围的结束索引号。
举例而言,所述步骤S4220中通过安卓中滚动列表的适配类Adapter获得条目对应的数据。具体而言,调用ListView中接口setAdapter(ListAdapteradapter),将ListView与适配类Adapter绑定,创建待展现的滚动列表的Adapter。将条目组中条目的索引号输入Adapter的接口getView(),获得该条目对应的数据信息。
步骤S430,调用包含多个子视图的视图容器,所述多个子视图与待展现的条目组中条目一一对应,将待展现的条目组中各个条目的数据装入对应的子视图中。
可以通过多种方式调用视图容器。例如,创建包含多个子视图的视图容器,调用创建的视图容器。又例如,调用已经释放的包含多个子视图的视图容器。
此外,在展现子视图时,将待展现的条目组中各个条目的数据输入对应的子视图,在子视图中根据输入的数据设置并排列所述条目的视图元素。
步骤S440,按待展现的条目组对应版式排列视图容器中的子视图,展现排列后的视图容器。
由上可见,本实施例中技术方案能够将滚动列表中的条目按多种版式展现,并且使用视图容器使得容易实现多种版式展现,由此解决了展现方式单一,对于复杂数据信息类型,展现实现难度增大,并由此增加开发成本的问题,取得了将复杂数据信息类型进行多样化展现,并且容易实现,节约开发成本的有益效果。
参见图6,示出了根据本发明一个实施例的滚动列表展现方法的流程图。在本实施例中,对条目组采用三种不同的版式进行展现。本实施例中滚动条目中总共500个条目,每5个条目为一组。
在本实施例中,基于安卓平台中ListView和Adapter来展现数量较大的数据条目。调用ListView中接口setAdapter(ListAdapter adapter),将ListView与适配类Adapter绑定,创建待展现的滚动列表的Adapter。自定义Adapter,实现针对条目组的Adapter中接口getCount()和getView()。
接口getCount()的返回值不再为现有技术中的条目数量,而是待展现的滚动列表中的条目组数量。具体实现为,getCount()的返回值为条目总数/预设的条目数n,例如500/5=100。
接口getView()的返回的条目视图不再为一个条目的数据信息的视图,而是某个位置上的条目组的视图。getView()所返回的视图为包含多个子视图的视图容器,视图容器中子视图按待展现的条目组对应版式排列。具体实现如下所述。
步骤S610,将滚动列表中的500个条目分组,分为100个条目组,每个条目组包括5个条目。
步骤S620,根据所请求的条目组的索引号index计算出该条目组中条目索引号的范围,根据请求的条目组中各个条目的索引号提取各个条目对应的数据。例如index为10,则条目组中条目的索引号范围的起始索引号为10×5=50,结束索引号为50+5-1=54,共5个条目,即5条数据信息。
步骤S630,创建或重用显示整个条目组中数据信息的视图容器,该视图容器中包含待显示的条目组数据信息所对应的所有子视图,将该条目组中各个条目的数据信息分别装入到各自所对应的子视图中。例如每组5条数据信息,则返回的视图容器将包含5个子视图,与条目组中5条数据信息一一对应。每个子视图内部可根据数据信息的特性设定视图元素的数量和布局。
步骤S640,按待展现的条目组对应版式排列视图容器中子视图,展现排列后的视图容器。本实施例中条目信息的展示如图3所示,待展现的条目组分别对应3种不同的版式。第一组数据信息对应的视图容器采用第一套版式,第二组数据信息对应的视图容器采用第二套版式,第三组数据信息对应的视图容器采用第三套版式。之后,第四组数据信息对应的视图容器再次采用第一套版式,如此循环,使得各组数据信息以不同版式展现。
本实施例中,可以基于ListView和Adapter来展现数量较大的数据条目,即以ListView或者从ListView派生出的控件类作为视图容器,配合使用重新实现的Adapter中接口getCount()和getView()来提供条目组的数量和视图。其不同于现有技术中条目与数据信息一一对应的展现方式,将数据信息按几个一组分成若干组,每组数据信息与滚动列表中一个条目组相对应,此条目组与ListView中ListView Item对应。在每一个条目组内部,对各个条目对应的数据信息的视图进行自定义排序,已达到不同于现有技术中视图中数据信息仅能纵向排列的更加多样的布局。并且,此实现方式可以基于已有接口实现,实现简单,节约了开发成本。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。