卡片View生成程序的封装方法、生成方法及显示方法技术

技术编号:35576371 阅读:22 留言:0更新日期:2022-11-12 16:01
本申请提供一种卡片View生成程序的封装方法、生成方法及显示方法,使用自定义View将卡片View的创建和数据绑定逻辑封装了起来,进行了充分解耦,各个卡片之间互不影响,降低了开发维护的成本。并且基于创建的自定义View基类生成的卡片View可以在任意列表,任意布局中使用,极大地提高了复用性。二次封装Adapter和ViewHolder主要是为使用自定义View基类自动创建对应卡片类型的卡片View而服务的,并且通过封装通用的部分,可以简化Adapter的实现,不再需要创建多个ViewHolder,从而降低了开发难度和成本。度和成本。度和成本。

【技术实现步骤摘要】
卡片View生成程序的封装方法、生成方法及显示方法


[0001]本申请涉及Android开发
,具体而言,涉及一种卡片View生成程序的封装方法、生成方法及显示方法。

技术介绍

[0002]在Android的移动端开发中,用列表来显示信息是一个基本的需求,Android平台提供了RecyclerView组件来实现这一需求。
[0003]使用RecyclerView有个关键,那就是适配器RecyclerView.Adapter。适配器的主要作用是根据列表中的数据,使用不同的RecyclerView.ViewHolder来创建卡片,并将数据绑定到卡片上进行显示,也就是说一种卡片样式对应一个ViewHolder。
[0004]请参阅图1,现有技术中,使用RecyclerView来实现列表,一般按如下流程进行:
[0005]1)创建一个ListAdapter类继承RecyclerView.Adapter;
[0006]2)在ListAdapter中创建内部类ViewHolder类,继承RecyclerView.ViewHolder,并在构造函数中通过layout布局文件生成卡片View,列表中有几种卡片就需要创建几个ViewHolder类;
[0007]3)ListAdapter类需要实现getItemViewType函数,提供给RecyclerView区分卡片类型;
[0008]4)ListAdapter类需要实现onCreateViewHolder函数,根据卡片类型生成对应的ViewHolder;
[0009]5)ListAdapter类需要实现onBindViewHolder函数,通过ViewHolder获取卡片View,将列表中的数据绑定到卡片View上;
[0010]6)将ListAdapter设置到RecyclerView上,并填充数据刷新,RecyclerView便会自动调用上面的函数创建卡片View、绑定数据。
[0011]当一个列表中需要显示的卡片样式较多时,比如好友聊天页面,需要文字、图片、视频、语音、表情、红包、礼物等卡片,我们需要创建大量的ViewHolder类。这些代码集中在一起就会造成在Adapter中代码的臃肿和冗余,甚至由于工程师滥用开发语言的继承和多态特性,进一步加剧了卡片之间的耦合度,工程师在开发维护时需要思考并测试自己的改动会不会影响到其他卡片,技术成本越来越大。

技术实现思路

[0012]本申请实施例的目的在于提供一种卡片View生成程序的封装方法、生成方法及显示方法,以在实现列表时,分离关注点,降低各部分之间的耦合度,进而降低开发难度和维护成本。
[0013]为了实现上述目的,本申请的实施例通过如下方式实现:
[0014]第一方面,本申请实施例提供一种卡片View生成程序的封装方法,包括:创建自定义View基类,用于提供公开函数和抽象绑定数据函数;创建一个ViewHolder类,用于存储卡
片View和提供公开函数;创建一个卡片类型实体,用于提供揭示卡片类型的卡片信息;创建Adapter,用于根据所述卡片信息判断卡片类型,生成对应此卡片类型且继承于自定义View基类的卡片View,并进一步生成对应此卡片类型的ViewHolder对象,其中,Adapter调用ViewHolder类提供的公开函数将数据传入ViewHolder对象,ViewHolder对象调用卡片View提供的公开函数将数据传入卡片View,以使卡片View通过绑定数据函数将ViewHolder对象传入的数据绑定到卡片View上。
[0015]在本申请实施例中,创建的Adapter用于根据卡片信息判断卡片类型,生成对应此卡片类型且继承于自定义View基类的卡片View,并进一步生成对应此卡片类型的ViewHolder对象,Adapter调用ViewHolder类提供的公开函数将数据传入ViewHolder对象,ViewHolder对象调用卡片View提供的公开函数将数据传入卡片View,以使卡片View通过绑定数据函数将ViewHolder对象传入的数据绑定到卡片View上。本方案使用自定义View将卡片View的创建和数据绑定逻辑封装了起来,进行了充分解耦,各个卡片之间互不影响,降低了开发维护的成本。并且基于创建的自定义View基类生成的卡片View可以在任意列表,任意布局中使用,极大地提高了复用性。二次封装Adapter和ViewHolder主要是为使用自定义View基类自动创建对应卡片类型的卡片View而服务的,并且通过封装通用的部分,可以简化Adapter的实现,不再需要创建多个ViewHolder(本方案创建的ViewHolder类可以通用),从而降低了开发难度和成本。
[0016]结合第一方面,在第一方面的第一种可能的实现方式中,创建自定义View基类,包括:将Layout布局文件加载为View;定义数据实体,数据实体表示需要显示到卡片View上的数据;公开函数,供ViewHolder类调用以传入数据;抽象绑定数据函数,由卡片View实现绑定数据。
[0017]结合第一方面,在第一方面的第二种可能的实现方式中,创建一个ViewHolder类,包括:创建一个公用的RecyclerView.ViewHolder类,用于存储卡片View;公开函数,供Adapter调用以传入数据。
[0018]在该实现方式中,创建一个ViewHolder类,提供存储View实例(即卡片View)和绑定数据的能力(通过公开函数,供Adapter调用以传入数据,使得放置于其中的卡片View可以绑定数据),并且,有了ViewHolder类,就不需要每个卡片View都创建一个ViewHolder类了。
[0019]结合第一方面,在第一方面的第三种可能的实现方式中,卡片信息包括卡片描述和卡片类别号,创建一个卡片类型实体,包括:创建一个卡片类型实体;添加卡片描述,用于供开发者识别;添加卡片类别号,用于供Adapter识别;创建自定义的卡片View class,用于通过反射构造函数创建卡片View。
[0020]在该实现方式中,卡片信息包括卡片描述和卡片类别号,便于Adapter和开发者识别卡片类型,自定义的卡片View class通过反射构造函数创建卡片View,这样可以支持各种卡片类型的卡片View的创建。
[0021]结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,若卡片信息异常,自定义的卡片View class,还用于通过反射构造函数创建空白内容的卡片View。
[0022]在该实现方式中,若卡片信息异常(例如识别不出卡片类型),通过反射构造函数
创建空白内容的卡片View,可以容错。
[0023]结合第一方面,在第一方面的第五种可能的实现方式中,创建Adapter,包括:针对数据列表中的数据对应单一卡片类型的情况:创建Adapter,记为Simple本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种卡片View生成程序的封装方法,其特征在于,包括:创建自定义View基类,用于提供公开函数和抽象绑定数据函数;创建一个ViewHolder类,用于存储卡片View和提供公开函数;创建一个卡片类型实体,用于提供揭示卡片类型的卡片信息;创建Adapter,用于根据所述卡片信息判断卡片类型,生成对应此卡片类型且继承于自定义View基类的卡片View,并进一步生成对应此卡片类型的ViewHolder对象,其中,Adapter调用ViewHolder类提供的公开函数将数据传入ViewHolder对象,ViewHolder对象调用卡片View提供的公开函数将数据传入卡片View,以使卡片View通过绑定数据函数将ViewHolder对象传入的数据绑定到卡片View上。2.根据权利要求1所述的卡片View生成程序的封装方法,其特征在于,创建自定义View基类,包括:将Layout布局文件加载为View;定义数据实体,数据实体表示需要显示到卡片View上的数据;公开函数,供ViewHolder类调用以传入数据;抽象绑定数据函数,由卡片View实现绑定数据。3.根据权利要求1所述的卡片View生成程序的封装方法,其特征在于,创建一个ViewHolder类,包括:创建一个公用的RecyclerView.ViewHolder类,用于存储卡片View;公开函数,供Adapter调用以传入数据。4.根据权利要求1所述的卡片View生成程序的封装方法,其特征在于,卡片信息包括卡片描述和卡片类别号,创建一个卡片类型实体,包括:创建一个卡片类型实体;添加卡片描述,用于供开发者识别;添加卡片类别号,用于供Adapter识别;创建自定义的卡片View class,用于通过反射构造函数创建卡片View。5.根据权利要求4所述的卡片View生成程序的封装方法,其特征在于,若卡片信息异常,自定义的卡片View class,还用于通过反射构造函数创建空白内容的卡片View。6.根据权利要求1所述的卡片View生成程序的封装方法,其特征在于,创建Adapter,包括:针对数据列表中的数据对应单一卡片类型的情况:创建Adapter,记为SimpleRVAdapter,且创建Adapter后无需创建新的Ada...

【专利技术属性】
技术研发人员:王文辉唐进段凌云陈正超
申请(专利权)人:贵阳语玩科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1