Skip to content

🔥 Android Kotlin时代的Adapter, Dsl 的形式使用 RecyclerView.Adapter, 支持折叠展开, 树结构,悬停,情感图状态切换, 加载更多, 多类型Item,侧滑菜单等

License

Notifications You must be signed in to change notification settings

angcyo/DslAdapter

Repository files navigation

DslAdapter

API 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.4'
    //支持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

访问统计

Loading