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

zzyandroid / 文 发表于2017-10-14 13:37 次阅读 android,kotlin

简介

为了简化开发,减少相同模块的复制粘贴,提高开发效率,现将一些常用的控件统一封装处理,原则上使用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


收藏 赞 (0) 踩 (0)