DslAdapter

Project Url: angcyo/DslAdapter
Introduction: :fire: Android Kotlin 时代的 Adapter, Dsl 的形式使用 RecyclerView.Adapter, 支持折叠展开, 树结构,悬停,情感图状态切换, 加载更多, 多类型 Item,侧滑菜单等
More: Author   ReportBugs   OfficialWebsite   
Tags:

GitHub branch checks state GitHub AndroidX GitHub top language JitPack

GitHub code size in bytes GitHub repo size GitHub last commit GitHub issues GitHub Repo stars GitHub forks

Kotlin时代的Adapter.

Dsl 的形式使用 RecyclerView.Adapter, 支持情感图状态切换, 加载更多, 多类型Item

Gitee 仓库地址

文档地址

有何用?

只有一个目的高效开发, 一切都是为了效率.

可能以前写界面, 还在为了继承某个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组合而成.

您所要做的就是:

  1. 将界面拆分成若干个 Item
  2. 继承DslAdapterItem实现对应的Item即可

魅力无极限, 期待您的表现.

特性

  1. 全网最轻量多类型 Item实现方法 (只需要关心布局+逻辑)
  2. 支持情感图状态(空布局 加载中 错误异常等)切换,完美支持自定义扩展 (也是一个Item)
  3. 支持加载更多 完美支持自定义扩展 (也是一个Item)
  4. 支持分组折叠 (类似 QQ 联系人好友分组,展开和折叠的效果)
  5. 支持 Item悬停 (类似 QQ 联系人好友分组,悬停的效果)
  6. 支持常规的分割线 (一会儿占满屏幕 一会儿有点边距的效果)
  7. 支持单选/多选 (支持固定选项)
  8. 支持某一个 Item 更新时,定向更新多个其他 Item (在表单编辑界面,很有用.)
  9. 支持群组功能 (指定连续的几个相同/不同的 item 为一组)
  10. 支持滑动选择(手指拖拽, 就可以选中范围内 item)
  11. 支持拖拽排序 侧滑删除 (注意不是侧滑菜单)
  12. 支持树结构类似于idea中的文件列表目录结构 (支持异步加载)
  13. 支持左右侧滑菜单(2.4.0后)
  14. 支持DataBinding(3.0.0后)
  15. 支持ViewBinding(参考示例)
  16. 支持Item 动画(4.3.0后)
  17. 支持将DslAdapterItem添加到任意ViewGroup中(5.1.0后)
  18. 支持单独将DslAdapterItemitemBind逻辑绑定在任意View中(5.1.0后)
  19. 新增IDslItem,并支持自动初始化(6.0.0minApi>=14)

功能展示

情感图切换 加载更多
情感图切换 加载更多
折叠展开 群组功能
折叠展开 群组功能
单选 多选
单选 多选
滑动选择 拖拽排序
滑动选择 拖拽排序
侧滑删除 树结构
侧滑删除 树结构
侧滑菜单 DslItem
侧滑菜单 DslItem

实战案例

多类型可复用内嵌Item 支持上下Item流的逻辑关联
多类型可复用内嵌`Item` 支持上下`Item`流的逻辑关联
IM 界面也能完美胜任 可动态控制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:6.0.3'
    //支持 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

FOSSA Status


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

联系作者

点此 QQ 对话 该死的空格 点此快速加群

开源地址

扫码进群

给点鼓励

趋势

angcyo/DslAdapter

👏 感谢

angcyo/DslAdapter

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools