介绍
代码量最少, 使用便捷, 非侵入式, 满足常见需求, 同时方便扩展和自定义.
特性
全网最少的代码
Kotlin的特性
通用适配器, 无需继承
快速实现常见需求
刷新还是添加数据都无闪屏
需求
用最少的代码实现开发过程中的常见需求:
多类型
单一数据模型一对多
多数据模型
添加头布局和脚布局
点击/长按事件
过滤重复点击
分组
展开折叠
顶部附着
支持所有的LayoutManager的分割线/均布间隔
切换模式
选择模式
全选/取消全选/反选
单选
监听选择事件
拖拽移动
侧滑删除
下拉刷新 | 上拉加载 (PageRefreshLayout)
多状态缺省页 (PageRefreshLayout)
自动分页加载 (PageRefreshLayout)
扩展
伸缩布局 (FlexboxLayoutManager)
自动化网络请求 (KalleExtension)
该网络请求基于Kalle|RxJava 实现自动化的网络请求
未来将支持:
无限滚动
安装
project 的 build.gradle
allprojects {
repositories {
// ...
maven { url 'https://jitpack.io' }
}
}
module 的 build.gradle
implementation 'com.github.liangjingkanji:BRV:1.2.14'
预览
初始化
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
BindingAdapter.modelId = BR.m // 推荐在Application中进行初始化或使用之前即可
}
}
多类型
不同数据模型
rv.linear().setup {
addType(R.layout.item_1)
addType(R.layout.item_2)
}.models = data
一对多数据模型
开发中常常遇到一个列表, 列表每个数据对应的一个字段来判断itemType
addType{
// 使用年龄来作为判断返回不同的布局
when (age) {
23 -> {
R.layout.item_1
}
else -> {
R.layout.item_2
}
}
}
分割线
快速实现分割线
fun RecyclerView.divider(
@DrawableRes drawable: Int,
@RecyclerView.Orientation orientation: Int = RecyclerView.VERTICAL,
block: ((Rect, View, RecyclerView, RecyclerView.State) -> Boolean)? = null
)
监听事件
监听事件需要先添加想要监听的view
fun addClickable(@IdRes vararg id