DslAdapter
:fire: Android Kotlin时代的Adapter, Dsl 的形式使用 RecyclerView.Adapter, 支持折叠展开, 树结构,悬停,情感图状态切换, 加载更多, 多类型Item,侧滑菜单等
Install / Use
/learn @angcyo/DslAdapterREADME
DslAdapter
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
功能展示
实战案例
多类型可复用内嵌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'
}
使用Maven Central的方式, 引入库.
仅支持
>=7.1.0版本.
配置仓库
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral() //this is important!
}
}
添加依赖
dependencies {
...
implementation "io.github.angcyo.DslAdapter:Adapter:7.1.0"
}
发布的版本号,可以在这里查看. 点击查看
功能使用
请访问 WIKI文档 查看详情说明.
更新日志
DslItem
正在整理的DslItem库, 囊括项目开发中能够见到的Item, 皆旨让开发更高效. 欢迎PR.
下载体验
扫码安装

License
群内有各(pian)种(ni)各(jin)样(qun)的大佬,等你来撩.
联系作者


趋势
👏 感谢
Related Skills
node-connect
339.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
339.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.8kCommit, push, and open a PR
|
|
|
|
|
|
