DslAdapter
Introduction: :fire: Android Kotlin 时代的 Adapter, Dsl 的形式使用 RecyclerView.Adapter, 支持折叠展开, 树结构,悬停,情感图状态切换, 加载更多, 多类型 Item,侧滑菜单等
Tags:
Kotlin时代的Adapter.
Dsl 的形式使用 RecyclerView.Adapter, 支持情感图状态切换, 加载更多, 多类型Item等
有何用?
只有一个目的高效开发, 一切都是为了效率.
可能以前写界面, 还在为了继承某个xxActivityorxxFragment, 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
你没有看错, 就是这么简单, 就是这么高效. 一个字...爽 爽 爽...
任意界面, 都是由若干个相同 Itemor不相同 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) 7.0.0->minSdk->21compileSdk->35
功能展示
| 情感图切换 | 加载更多 |
|---|---|
![]() |
![]() |
| 折叠展开 | 群组功能 |
|---|---|
![]() |
![]() |
| 单选 | 多选 |
|---|---|
![]() |
![]() |
| 滑动选择 | 拖拽排序 |
|---|---|
![]() |
![]() |
| 侧滑删除 | 树结构 |
|---|---|
![]() |
![]() |
| 侧滑菜单 | DslItem |
|---|---|
![]() |
![]() |
实战案例
多类型可复用内嵌Item |
支持上下Item流的逻辑关联 |
|---|---|
![]() |
![]() |
| IM 界面也能完美胜任 | 可动态控制Item的表单界面 |
|---|---|
![]() |
![]() |
疑问
如何实现最后一个Item撑满RecycleView底部的剩余空间(如果有)?
需要自定义ViewGroup, 在onLayout方法中, 计算出RecycleView底部的剩余空间, 赋值给LayoutParams即可.
使用JitPack的方式, 引入库.
根目录中的 build.gradle
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
APP 目录中的 build.gradle
dependencies {
//androidx(推荐)
implementation 'com.github.angcyo:DslAdapter:7.1.0'
//支持 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)的大佬,等你来撩.
联系作者


















