大家好,我回来了。
由于有一段时间个人原因没有维护,今天重新开始维护。
有需求的可以在此Issue留言。
点赞最多的需求会优先被纳入开发排期中。
非常感谢大家的支持。
有想法一起贡献BRVAH的开发者可以加我微信(chad_cym)沟通,记得添加时备注:BRVAH。
判断手机屏幕当前显示的是哪一条item或者哪条item占的比重最大。很多用来列表播放视频的,都能用到,就像微博视频一样,滑到哪个item,播放哪一个视频。
[多布局之间拖动 #2692] (https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/2692)
目前section有header,建议加个footer
mvvm+databinding开发架构什么时候支持
能不能为BaseItemProvider提供构造ViewHolder时的回调事件 现在的BaseItemProvider并不能完全的做到业务独立 例如我以往可以在ViewHolder的构造方法里一次性的为TextView添加TextWatcher 现在只能在ItemProvider的convert方法里创建TextWatcher并付值为ItemProvider的成员变量 然后addTextWatcher之前检测成员mTextWachter是否为空 如果不为就先执行removeTextChangedListener方法然后再创建一个新的TextWahter成员去付值 有点恶心...希望作者可以改进一下
多选、支持纯view创建方式的item
最近在做香港相关的项目,因此要适配繁体中文,楼主能不能string.xml做个多语言。
希望能兼容PagedListAdapter
BaseMultiItemQuickAdapter 新增函数用来删除指定 Item 的 subItem 。
传一个SparseArray的数据类型 而不是 list
希望adapter可以返回onBindViewHolder中的List
希望adapter可以返回onBindViewHolder中的List payloads参数,用来实现item中某个控件的刷新
最新版本 v2.9.47 已经加入了 DiffUtil 做局部刷新,具体使用方式参考 DiffUtilActivity
RecyclerView添加搜索过滤器,这个功能很有必要
正常的RecyclerView设置setEnptyView之后能正常显示,但是如果是这个RecyclerView设置了HeaderView之后,因为监听的是列表数据的变化,就会出现头部数据变化了之后,调用notifyDataSetChanged更改数据时无反应。
@Onperson 头部数据数据变化后,headeriview的数据变化需要自己手动更新,因为adapter的headerview的数据绑定没有走adapter的convert方法
正常的RecyclerView设置setEnptyView之后能正常显示,但是如果是这个RecyclerView设置了HeaderView之后,因为监听的是列表数据的变化,就会出现头部数据变化了之后,调用notifyDataSetChanged更改数据时无反应。
headView 可以单独用一个 viewBinder 管理。
支持下butterKnife
支持下butterKnife
没懂,可以详细说一下吗?~
允许使用ButterKnife在adapter里面进行控件view的初始化
@BindView(R.id.title) TextView name;
@BindView(R.id.job_title) TextView jobTitle;
允许使用ButterKnife在adapter里面进行控件view的初始化
@BindView(R.id.title) TextView name;
@BindView(R.id.job_title) TextView jobTitle;
哦哦 ,大概懂了。其实已经算支持了,你的业务代码写在哪里的?
如果是 xxHolder 来继承 BaseViewHolder 。里面写业务代码。如果这么做的话,在构造器里就可以 ButterKnife.bind(this, view); 。
允许使用ButterKnife在adapter里面进行控件view的初始化
@BindView(R.id.title) TextView name;
@BindView(R.id.job_title) TextView jobTitle;
@Brainbg 不需要 Adapter 提供支持。
ButterKnife 可以绑定 View 到任意对象,只要自定义 ViewHolder 就行了:
class MyViewHolder extends BaseViewHolder {
@BindView(R.id.tv)
TextView tv;
public MyViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
}
温馨提示: BaseViewHolder 已经提供了几乎所有常用的 View 操作,如 setText(viewId, text) setImageResource(viewId, resId) getView(viewId) ,并且会自动缓存,没必要使用 ButterKnife。
希望修改 分页数据不占满一屏,会自动加载更多的问题。只加载第一页的数据,不要自动加载第二页,第三页...的数据。
希望修改分页数据不占满一屏,会自动加载更多的问题。只加载第一页的数据,不要自动加载第二页,第三页...的数据。
你在调用setNewData之后 ,调用disableLoadMoreIfNotFullPage()方法,不满一页的时候,就不会自动加载第二第三页的数据了。
https://github.com/luizgrp/SectionedRecyclerViewAdapter 参考一下这个库,里面的思想很有意思,不局限于将数据格式化(继承相同的MultiItemEntity),每一个section可以设置不同的数据,展示不同的界面样式。而且我发现使用BRVAH会有一些局限性,类似于朋友圈评论的查看全部这种就不太好实现,还有目录结构的列表时,item样式只能相似的才可以用,样式差异大的时候,像ItemDecoration就没办法使用了,还有当顶层目录像cardview那种样式,展开的时候还要保持下级目录也在cardview那里面,就不好实现了
支持右滑的recycleview吗
支持右滑的recycleview吗
这个只是一个适配器,和你的 RecycleView 怎么滑动没关系的。
SpanSizeLookup的处理不合理。
BaseQuickAdapter#onAttachedToRecyclerView() 函数中给 manager 设置了 SpanSizeLookup,导致在 setAdapter() 之前 manager.setSpanSizeLookup() 的值被覆盖导致无效。
目前的错误的写法:
gridManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
...
if (mSpanSizeLookup == null) {
return isFixedViewType(type) ? gridManager.getSpanCount() : 1;
} else {
return (isFixedViewType(type)) ? gridManager.getSpanCount() : mSpanSizeLookup.getSpanSize(gridManager, position - getHeaderLayoutCount());
}
}
}
正确的写法:
// 记录默认的 SpanSizeLookup
final GridLayoutManager.SpanSizeLookup defSpanSizeLookup = gridManager.getSpanSizeLookup();
// 设置新的 SpanSizeLookup 作为代理
gridManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
...
if (mSpanSizeLookup == null) {
// adapter 不处理的时候,需要使用默认的 SpanSizeLookup 处理,而不是直接返回 1 。
return isFixedViewType(type) ? gridManager.getSpanCount() : defSpanSizeLookup.getSpanSize(position);
} else {
// 需要使用设置到 adapter 的 SpanSizeLookup 处理。
// position 参数需要与默认的 SpanSizeLookup 保持一致,不应该减去头部数量。
return (isFixedViewType(type)) ? gridManager.getSpanCount() : mSpanSizeLookup.getSpanSize(gridManager, position);
}
}
});
支持SortedList
由于 [添加多个HeaderView,最终会被合成一个item ]https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/950 ;
现在有这样一个需求:
我添加了三个HeaderView,然后我滑动时获取firstVisibleItemPosition,判断当滑动到第二个HeaderView位置时,显示其他view。
然而我是获取不到第二个HeaderView位置的,因为在HeaderView范围时一直返回的是0(被合成一个item)。我只能通过偏移量或其他方式获取对应HeaderView显示的位置,当HeaderView过多时没有直接获取HeaderView的item位置来的方便。
setBackgroundColor() setTextColor() 现在好像支持 @ColorInt 类型的值,希望可以支持@ColorRes,这样做一些颜色的设置更灵活和方便,适用更广泛!
支持collapse/expand(startPosition, endPosition)
尽快将主分支切换到AndroidX跟Kotlin吧
有Item侧滑显示出删除按钮的功能吗?

就想这样的 想左滑,item内容也想左移动,并且显示出右边隐藏的删除按钮
尽快将主分支切换到AndroidX跟Kotlin吧
目前在规划3.x,AndroidX已经提上日程。现有对2.x不再进行大改动
尽快将主分支切换到AndroidX跟Kotlin吧
目前在规划3.x,AndroidX已经提上日程。现有对2.x不再进行大改动
请问3.x有什么大的方向?
单选/多选功能很常用的,建议添加
希望修改 分页数据不占满一屏,会自动加载更多的问题。只加载第一页的数据,不要自动加载第二页,第三页...的数据。
同求修改这个问题,有点难受啊
建议可以配合viewmodel、databinding一起使用
单选和多选的功能改如何实现呢?
请问下是否支持CursorAdapter,有没有哪个Adapter继承自CursorAdapter
你啥时候升级androidx 出来呢
支持Filter 过滤
section header 希望添加一个Stick的功能 ,谢谢
想要mvvm+databinding开发架构支持 和androidx 支持
MultipleItemRvAdapter
ItemProvider可以支持多个layout,根据layout(Model data)中的data返回布局
老哥,能支持多Section 长按拖动的同时,在section里面的子item也能控制在setion范围内长按拖动吗?
项目需要一个流式布局,自定义了一个LayoutManager,用普通的adapter没影响,但想要再实现那个item拖拽变化位置的,这个就会出现数据错乱,可以对这个做适配么,或者增加个流式布局LayoutManager
@SunshineflowerLee 网上有很多流式布局,这个库是封装Adapter的.
很多库都有这种效果TabFlowLayout
ZLayoutManager
直接仿照上面的例子写了
目前section有header,建议加个footer
请尝试 3.x 版本的 BaseNodeAdapter
想要mvvm+databinding开发架构支持 和androidx 支持
请尝试 3.x 版本
你啥时候升级androidx 出来呢
请尝试 3.x 版本
添加头部或者多个头部的时候,分割线会出现在多个头部之间,或者建议加入添加分割线功能,可以忽略头部或者底部
添加头部或者多个头部的时候,分割线会出现在多个头部之间,或者建议加入添加分割线功能,可以忽略头部或者底部
在分割线的class里,判断一下header头部就行了,自己排除掉,很简单的几句话。
分割线样式千千万,我们不可能全部照顾。
分割线也不属于本库的职责
求添加一个列表多选单选,分组多选单选这样的功能
添加header时,header的数据量过大,比如加载过多图片,导致界面很卡,有什么办法可以复用么
能增加一个GridLayoutManager跟LinearLayoutManager切换的功能吗 可以变换表格与列表形式 加载不同的布局
单选/多选功能很常用的,建议添加
还有全选,反选
首页多布局问题-如果接口有好几个,数据实体有多个,这样实现多布局就无法实现。
希望支持更多子视图事件绑定。如:EditText 等
单选/多选 全选/反选 建议加一个 比较常用
请问一下3.0什么时候能出releases版本,我们做了一个需求,是基于本库3.0 beta2版本的多层级目录,现在代码的owner review的时候不给过,必须要让我们使用release版本
是否可以暴露出获取loadingview状态的方法
关于这个方法 isUseEmpty(boolean isUseEmpty) ,是否可以考虑此方法作为一个get方法, 用一个新的set方法进行注入。 因为网络请求返回的dataList是null的时候我并不想每次都更新adapter(但是不设置一次的话emptyView就无法显示,我在之前设置了isUseEmpty为false),我只想判断一下,当isUseEmpty 为false的时候,更新以便能显示emptyView。
适配viewBinding
希望能够适配viewBinding
建议增加一个方法
fun <T,VH : BaseViewHolder>BaseQuickAdapter<T, VH>.notifyItemChanged(item:T){
val position = data.indexOf(item)
if (position > -1){
notifyItemChanged(position)
}
}
希望Adapter适配viewBinding 。◕◡◕。)ノ
建议添加点击水波纹效果,谢谢
对多状态页面支持,虽然有其他第三方库可以实现多状态页面,例如LoadSir,但是使用这些第三方库会有一个很明显的弊端,其原理因为使用FramentLayout包裹了一层,在加载中、空数据、网络错误等状态下会替换掉RecyclerView,这样很容易出现一些滑动处理方面的问题,例如AppBarLayout 和RecyclerView的联动,RecyclerView内部是支持联动的,但是使用LoadSir这类第三库会使联动功能出现偏差或者失效,而且联合起来使用大大增加了代码量,因此建议增加对多状态页面支持,类似于BaseLoadMoreModule已模块的方式添加。
希望添加获取当前屏幕上可见数据范围的功能
虽然自带api有这个功能但是只能在scrollListener中获取到,希望可以在第一次设置数据的时候,获取到可见item索引范围

ExpandableListView+group和child的MULTIPLECHOICE
1、多布局啥时候支持瀑布流哇
2、多布局列表,列间距通过代码如何控制
有考虑支持和 jetpack paging结合使用吗?
loadmore module希望暴露出当前加载到第几页,以及对应页面的url
BaseNodeAdapter子节点只有单项数据内容变更,能否增加 payload,提高刷新效率
建议添加 setSelected 方法
建议增加刷新Item中指定组件的方法
滑动时是否可以固定一个或者多个Header
Most helpful comment
判断手机屏幕当前显示的是哪一条item或者哪条item占的比重最大。很多用来列表播放视频的,都能用到,就像微博视频一样,滑到哪个item,播放哪一个视频。