助你简单搞定表单详情页的实现

简介

为了简化开发,减少相同模块的复制粘贴,提高开发效率,现将一些常用的控件统一封装处理,原则上使用mvp架构,抽象出presenter层并对view层保持弱引用关系,后期support 更新至26.1.0 方可切换为官方的生命周期监听方案。

MVP整体架构图

MVP

常规的MVP架构图,就不多做解释,下面说下View与Presenter的两个不同策略方案

support 26.1.0版本以上方案

Life

该方案是在高版本中,官方已经将AppCompatActivity实现了生命周期监听

具体说明请看:

https://developer.android.com/topic/libraries/architecture/adding-components.html

https://developer.android.com/topic/libraries/architecture/guide.html

support 26.1.0版本以下方案

Weak

该方案是利用弱引用的特性,解决Presenter对Activity强引用关系,当无法回收Activity时导致的内存泄漏问题

目标实现

页面动态配置,结果自动映射到Map,高可配,高复用,低耦合

页面效果展示如下:

效果1


效果2

代码配置:

这里展示一部分

代码1

代码加载展示:

presenter初始化数据
Activity展示

整体架构方案

Architecture

Activity:

1.Activity作为View层 只负责UI的展示,toolbar、recyclerView、multiTypeAdapter、bottomView四个常用部分组成

2.multiTypeAdapter是封装好的框架,是个自定义的Adatper,该框架旨在项目中,免去写Adapter的麻烦。支持自动排序(默认正序),拖拽,左右滑动删除等功能,还有加载更多,空布局展示,头尾布局等

multiTypeAdapter框架实现原理图,将每个可复用的Item都抽象为一个ViewModel的实例

原理图

Presenter:

1.Presenter层 负责页面数据的转换,从Tables里拿到配置好的列表数据,通过ItemTransformationFactory将数据转化为页面需要ViewData,添加到multiTypeAdapter中。

2.ItemValidate 负责认证每一项数据的合法性

3.ItemTableType 负责不同的Item项,如: 只显示文本的样式,显示文本加输入框的的样式,支持拓展新样式

4.ItemTableBean 负责一项Item的基本属性,key、keyName、itemUUID、ItemTableType等属性

5.ItemTableList 最终由ItemTransformationFactory转换成multiTypeAdapter需要的页面数据类型。

6.需要展示默认信息的页面:需要一层Map映射,Map的key就对应ItemTableBean中的key

7.在Presenter中创建一个新的map,传入到ItemTransformationFactory的方法中可以自动将EditText,Select的数据自动映射到这个map中,在网络提交的时候直接作为参数即可。

Model:

架构图中没有该层的展示,保持原有项目结构即可。

Demo

demo代码地址:github.com/Papeone/Table

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值