Android RecycleView最佳实践
Android RecycleView最佳实践
原创 大王 1周前
收录于话题
#android1
#函数式编程1
#客户端架构1
RecycleView是Android开发过程中经常用的一种控件. 相信Android小伙伴在使用过程经历过如下的折磨
- 每个使用RecycleView的地方都需要使用定义对应的Adapter.
- 每个不同模块都需要定义不同的ViewHolder.
- 每个不同模块都需要指定不同的布局文件.
- 每个不同模块都需要绑定数据到视图.
- 每个不同模块都需要指定宽度信息.
- 每次添加一个模块需要重复上面2到5的过程.
在大型项目项目每次修改的时候面对如此多的地方和每个地方的多达数十个的switch或者if-else语句, 相信大家内心都很crazy. 这里提供一个方案(GridRender)来解决这样的问题.
GridRender方案目标
为了解放业务开发同学,GridRender方案的主要目标如下:
- 消除创建同质化的Adapter和ViewHolder
- 模块的处理集中在同一个类
- 保证业务模块核心逻辑稳定
- 新增模块不影响原有的模块
GridRender架构
- 提出RenderModel概念,一个RenderModel代表一个模块.
- GridRender内部处理实现Adapter和ViewHolder
- GridRender交互的数据为List
- 原来的Present层由生成ViewHolder转化为生成RenderModel
- RenderModel提供模块所需要的所有信息.
- 布局文件
- 布局宽度
- 事件响应
GridRender使用流程
- 调用Present的buildRenderModels将实体数据转化为RenderModel
- 调用GridRender的setRenderModels将数据提供给Render
- GridRender内部会在合适的时机调用RenderModel提供的方法完成真正的渲染.
实战
需要构建的界面如下
-----[图片] (resource/875DAF5487FB8FACFAA2E30BB90CDE54.gif)
示意图界面具有如下特征
- 界面由不同的模块组成.
- 模块由标题(Header),内容,底部组成(Footer), 其中模块Header和模块Footer是可选的
- 模块内容部分存在多种样式, 上图下文,左图右文, 多列
具体支持的模块如下:
模块名称一行列数模块头部模块底部左图右文模块1有有大图模块1有有通栏模块1无无一行三列模块3有有一行四列模块4有有