公开/公告号CN112860254A
专利类型发明专利
公开/公告日2021-05-28
原文格式PDF
申请/专利权人 武汉蓝星科技股份有限公司;
申请/专利号CN202110165861.5
申请日2021-02-07
分类号G06F8/38(20180101);G06F9/451(20180101);
代理机构42242 武汉蓝宝石专利代理事务所(特殊普通合伙);
代理人廉海涛
地址 430000 湖北省武汉市东湖新技术开发区高新六路99号南山光谷自贸港E5栋1-1、1-2、2-1、2-2号
入库时间 2023-06-19 11:08:20
技术领域
本发明涉及计算机图形处理技术领域,具体涉及一种使用数据模型呈现列表控件的方法。
背景技术
在实际界面程序的开发中,经常面临这样的需求:有大量的复杂数据需要呈现出来,比如显示一个目录下的所有文件信息。一般做法就是用户通过系统调用获取文件信息,并转换成自己设计的数据结构;然后遍历数据结构,创建按钮或标签来堆砌显示内容,并且需要自己来解决以下问题:
1、当数据发生变化时(添加、删除、修改),修改相应的显示控件。
2、数据的呈现往往有不同的排版布局要求,比如一个目录下的所有文件可以通过列表的形式查看,也可以通过图标的形式查看,并且显示的外观 (字体大小、颜色)需要灵活配置。
用户花费了很多精力完成了上述需求的代码,当又有一种新的复杂数据需要显示时,却发现这些代码不能直接复用,因为在源代码中定义的数据结构只是针对文件信息的,数据结构中的成员名称可能不合适,可能需要添加数据成员,甚至多个数据结构之间的关系都需要调整,必须把之前的工作再做一遍。
发明内容
本发明针对现有技术中存在的技术问题,提供一种使用数据模型呈现列表控件的方法。
本发明解决上述技术问题的技术方案如下:
一种使用数据模型呈现列表控件的方法,包括以下步骤:
获取预先编辑的列表控件的显示样式文件;所述显示样式文件中包含列表项item的布局,列表项item中包含多个子显示单元;
获取需要呈现的数据内容,所述数据内容以一定的数据模型存储,包括数据节点node及其子节点;
加载所述显示样式文件以及所述数据内容,将所述列表项item的子显示单元作为key,将所述数据节点node的子节点作为value,利用value-key方式将所述显示样式文件与所述数据内容进行绑定;
根据value-key的绑定结果,将所述数据内容按照所述显示样式文件的格式进行内容显示。
进一步的,所述显示样式文件或所述数据内容发生变化时,同步更新 value-key的绑定关系,并根据更新后的value-key的绑定关系,对显示内容进行修改。
进一步的,所述数据模型更新时使用加锁方式确保其原子性操作。
进一步的,数据模型加锁后进行数据更新时,通过修改对应模型中的数据子节点value值,完成显示内容的更新。
进一步的,数据模型在内容被更新后会将更新同步到显示单元上去。
本发明的有益效果是:
1.设计了一种通用的数据模型,在大部分应用场景中,复杂数据都能够简单高效的转换成该数据模型。
2.提供了智能排版和显示复杂数据模型的控件,让用户只专注于数据本身的维护,而不需要操心数据是怎么呈现的,并且数据显示的排版和外观都可以在程序外灵活配置。
附图说明
图1为本发明实施例提供的用户更新数据时的流程图;
图2为本发明实施例提供的通话记录每个item项中需要显示的数据项示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,本发明实施例提供一种使用数据模型呈现列表控件的方法,包括以下步骤:
步骤1,获取预先编辑的列表控件的显示样式文件;所述显示样式文件中包含列表项item的布局,列表项item中包含多个子显示单元。
步骤2,获取需要呈现的数据内容,所述数据内容以一定的数据模型存储,包括数据节点node及其子节点。
显示样式文件包括视图显示单元的排版与外观文件,所述显示样式文件在程序外进行编辑。排版文件只需要提供单个列表项item的布局即可,item 对应数据模型中的基本单元:数据节点node。
步骤3,加载所述显示样式文件以及所述数据内容,将所述列表项item 的子显示单元作为key,将所述数据节点node的子节点作为value,利用 value-key方式将所述显示样式文件与所述数据内容进行绑定;
步骤4,根据value-key的绑定结果,将所述数据内容按照所述显示样式文件的格式进行内容显示。
进一步的,所述显示样式文件或所述数据内容发生变化时,同步更新 value-key的绑定关系,并根据更新后的value-key的绑定关系,对显示内容进行修改。
排版文件产生变化时,在程序外修改好对应的item布局,在程序中只需要对数据模型中的数据节点node添加或者删除相应的子节点value即可。
当程序中业务需求产生变化导致业务数据模型产生变化时,在程序外修改排版文件中对应的呈现新数据的那部分显示单元key即可,程序启动创建数据模型时数据模型中的子节点value会自动与显示单元key一一对应。
数据和排版都产生变化时,修改排版文件中的key和数据模型中数据节点node中的子节点value,使排版文件中的显示单元key与各个数据子节点 value一一对应即可。
数据模型更新数据时使用加锁方式确保其原子操作性。
数据模型加锁后用户更新数据时,更新对应模型中的数据子节点value 即可。
在多任务操作系统中,使用互斥锁来控制多个任务对共享资源(数据模型)的访问,防止一个任务对数据模型更新未完成时另一个任务插队更新导致数据模型内容错乱。加锁后才能保证同一时间只有一个任务对数据模型进行操作。不加锁时所有任务会无序更新数据模型,造成模型中的数据内容紊乱。加锁解锁是为了让多个任务在准备同时更新数据模型时通过这个机制保证顺序,保证每一次的更新都是可控。
数据模型在内容被更新后会将更新同步到显示单元上去。不需要用户逐个操作列表中显示单元去呈现新的用户数据,达到列表显示单元与用户数据解耦的目的。
通过本发明方法,滑动列表的视图显示单元/列表项与用户数据解耦,由数据模型中的节点与之对应;每个列表项中的子显示单元与数据模型中的子节点一一对应;用户数据更新时用户只需要更新数据模型中的节点即可;数据模型自动在视图显示单元上呈现模型中的节点更新后的数据。
具体的,本实施例以通话记录为例对本发明方法进行进一步说明。
一、确认需要呈现的复杂数据结构的内容,比如通话记录每个item项中需要显示的数据项,如图2;
二、根据步骤一的显示需求,在程序外编辑列表控件的布局及风格文件,如下所示:
三、程序运行时加载步骤二中的排版文件,并根据其创建所述数据模型DataModel,如下所示;
DataModel node:
{
子节点value1:序号=index,整形数据。0~N,N为程序中约定的最大记录值
子节点value2:状态=status,整形数据。0=已接、1=未接、3=拨出
子节点value3:电话号码="张三"或者"159xxxx0000",字符串数据。存放此次通话的电话号码或者联系人姓名
子节点value4:时间="2020/11/3023:59",字符串数据。存放此次通话的时间
}
四、图2中的“显示单元1”与数据模型中的节点node对应,其他每个子显示单元为一个key,与node中的每个子节点value对应;
五、当图2中的显示单元有增、减或者修改时,需要重新加载排版文件并创建新的数据模型,每一个显示单元为一个key,对应数据模型中的每一个子节点value,使value对应key;
六、数据模型中的子节点需要变化时,排版文件如图2中的子显示单元也需要对应的变化,使key对应value;
七、程序运行过程中有数据更新时,用户操作数据模型中新数据对应的子节点value,更新其值即可,不用直接操作对应的显示单元key;
八、所述数据模型会自动更新列表条目控件key,更新显示内容。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
机译: 一种信息建模,表示和集成的信息进程与不同型号的知识表示的无需使用正式语言的方法,这是一种基于结构化数据的有限集合来呈现描述这些对象的半结构化数据的方法
机译: 一种使用物联网和/或其他替代相机或视觉处理的传感器放置,跟踪和呈现基于实境-虚拟环境的连续环境的方法及其方法
机译: 一种通过使用预编程的表格或矩阵来响应操作员的动作或编程的刺激,在电子视频记分板上自动,有序和简单地呈现广告和其他信息的方法。