DslAdapter
Kotlin
时代的Adapter
.
Dsl
的形式使用 RecyclerView.Adapter
, 支持情感图状态切换, 加载更多, 多类型Item
等
有何用?
只有一个目的高效开发
, 一切都是为了效率
.
可能以前写界面, 还在为了继承某个xxActivity
orxxFragment
, xml
布局到底使用xxLayout
而烦扰.
有了DslAdapter
, 一切皆是RecyclerView
的天下.
你所能见到的普通界面
,列表界面
,带滚动的界面
等等, 都可以使用DslAdapter
轻松高效实现.
注意: 是轻松高效实现
,轻松高效实现
,轻松高效实现
.
//普通界面渲染
dslAdapter.render {
this + 普通1Item()
this + 普通2Item()
this + 普通3Item()
...
底部普通Item()()
}
//列表界面渲染
dslAdapter.render {
刷新指示器Item()()
头部Item()()
轮播图Item()()
列表Item()()
列表Item()()
列表Item()()
...
尾部Item()()
加载更多Item()()
}
//普通界面和列表界面 如出一辙, 一点也不用惊讶,后面还有更刺激的.
//and so on
你没有看错, 就是这么简单
, 就是这么高效
. 一个字...爽 爽 爽...
任意界面, 都是由若干个相同Item
or不相同Item
组合而成.
您所要做的就是:
- 将界面拆分成
若干个Item
- 继承
DslAdapterItem
实现对应的Item
即可
魅力无极限, 期待您的表现.
特性
全网最轻量
的多类型Item
实现方法 (只需要关心布局
+逻辑
)- 支持
情感图状
态(空布局 加载中 错误异常等)切换,完美支持自定义扩展 (也是一个Item
) - 支持
加载更多
完美支持自定义扩展 (也是一个Item
) - 支持分组
折叠
(类似QQ联系人好友分组,展开和折叠的效果) - 支持Item
悬停
(类似QQ联系人好友分组,悬停的效果) - 支持常规的
分割线
(一会儿占满屏幕 一会儿有点边距的效果) - 支持单
选/多选
(支持固定选项) - 支持某一个Item更新时,
定向更新
多个其他Item (在表单编辑界面,很有用.) - 支持
群组
功能 (指定连续的几个相同/不同的item为一组) - 支持
滑动选择
(手指拖拽, 就可以选中范围内item) - 支持
拖拽排序
侧滑删除
(注意不是侧滑菜单) - 支持
树结构
类似于idea
中的文件列表目录结构 (支持异步加载) - 支持
左右侧滑菜单
(2.4.0
后) - 支持
DataBinding
(3.0.0
后) - 支持
ViewBinding
(参考示例) - 支持
Item动画
(4.3.0
后) - 支持将
DslAdapterItem
添加到任意ViewGroup
中(5.1.0
后) - 支持单独将
DslAdapterItem
的itemBind
逻辑绑定在任意View
中(5.1.0
后) - 新增
IDslItem
,并支持自动初始化(6.0.0
后minApi>=14
)
功能展示
情感图切换 | 加载更多 |
---|---|
折叠展开 | 群组功能 |
---|---|
单选 | 多选 |
---|---|
滑动选择 | 拖拽排序 |
---|---|
侧滑删除 | 树结构 |
---|---|
侧滑菜单 | DslItem |
---|---|
实战案例
多类型可复用内嵌Item |
支持上下Item 流的逻辑关联 |
---|---|
IM界面也能完美胜任 | 可动态控制Item 的表单界面 |
---|---|
疑问
Item
撑满RecycleView
底部的剩余空间(如果有)?
如何实现最后一个需要自定义ViewGroup
, 在onLayout
方法中, 计算出RecycleView
底部的剩余空间, 赋值给LayoutParams
即可.
JitPack
的方式, 引入库.
使用build.gradle
根目录中的 allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
build.gradle
APP目录中的 dependencies {
//androidx(推荐)
implementation 'com.github.angcyo:DslAdapter:6.0.1'
//支持DataBinding
implementation 'com.github.angcyo:DslAdapter:3.0.0-binding'
//support版请使用(不保证及时更新)
implementation 'com.github.angcyo:DslAdapter:1.2.0'
//跟随作者最新版请使用
implementation 'com.github.angcyo:DslAdapter:master-SNAPSHOT'
}
发布的版本号,可以在这里查看. 点击查看
功能使用
请访问 WIKI文档 查看详情说明.
更新日志
DslItem
正在整理的DslItem库, 囊括项目开发中能够见到的Item
, 皆旨让开发更高效. 欢迎PR.
下载体验
扫码安装
License
群内有各(pian)种(ni)各(jin)样(qun)
的大佬,等你来撩.