-
Notifications
You must be signed in to change notification settings - Fork 140
Update log
景彬 edited this page Jun 7, 2024
·
21 revisions
引入:
- implementation 'com.github.youlookwhat:ByRecyclerView:1.4.1'
- implementation 'com.github.youlookwhat:ByRecyclerView:1.0.18-support' // support版本停止支持
ListView的BaseListAdapter 优化和新增 setNewData()
public void setNewData(List<T> data) {
this.mData = data == null ? new ArrayList<T>() : data;
notifyDataSetChanged();
}
adapter里新增:
setPageEmptyView(View emptyView)
setPageData(boolean isFirstPage, List<T> data)
在adapter里可单独设置emptyView,然后再使用setPageData()
fix removeData() 详细
fix 优化判断是否能加载更多逻辑。感谢来自QQ群的[BugMaker]使用者提出~
public boolean isLoadMoreEnabled() {
return mLoadMoreListener != null && (mLoadMoreEnabledStatus == 1 || mLoadMoreEnabledStatus == 2);
}
/**
* 设置数据 和 处理空视图。
* 如果想列表上方状态视图(StateView),不能使用这个方法。
*
* @param isFirstPage 是否是第一页
* @param data 需要设置的数据
* @param emptyView 空视图的View
*/
public void setPageData(boolean isFirstPage, List<T> data, View emptyView)
增加setPageData()一行代码即可处理列表显示数据。
优化:内存释放和临界状态的处理
fix item 悬浮置顶加入下拉刷新 ,悬浮错位 issues/57
if (StickyHeaderHandler.TYPE_STICKY_VIEW == mBaseAdapter.getItemViewType(i)) {
int customTopItemViewCount = mBaseAdapter.getCustomTopItemViewCount();
mHeaderPositions.add(i + customTopItemViewCount);
}
修复可能发生的角标越界异常
if (mData != null && mData.size() > 0 && position < mData.size()) {
return mData.get(position);
}
增加自动加载更多功能,即相比以前只用在设置监听时加上状态true
即可,使用方式:
void setOnLoadMoreListener(boolean isAutoLoadMore, OnLoadMoreListener listener)
void setOnLoadMoreListener(boolean isAutoLoadMore, int preLoadNumber, OnLoadMoreListener listener)
/**
* 设置加载更多监听
*
* @param isAutoLoadMore 是否自动加载
* @param preLoadNumber 自动加载时,默认滑动到倒数第[preLoadNumber]条数据加载,默认1
* @param listener 监听器
* @param delayMillis 延迟多少毫秒执行加载更多
*/
void setOnLoadMoreListener(boolean isAutoLoadMore, int preLoadNumber, OnLoadMoreListener listener, long delayMillis)
- 如果不设置,默认还是使用上拉松手加载更多机制(暂定,如果大部分人建议默认自动加载更多,可再调整)
- 设置后如果想取消自动加载还是使用
recyclerView.setLoadMoreEnabled(false);
- 不满一屏不加载更多
setNotFullScreenNoLoadMore()
,只对上拉松手加载更多
有效
PS:如果自定义了加载更多布局,会有提示错误,需要实现getState()
方法,添加示例:
private int mState = BaseLoadMore.STATE_COMPLETE;
@Override
public void setState(int state) {
mState = state;
}
@Override
public int getState() {
return mState;
}
- [完善] 使用
refreshNotifyItemChanged(position, payload);
不继承bindViewPayloads
时,默认使用bindView
处理。
- 新增 Item局部刷新,具体请见demo示例
// 设置要局部刷新的position及payload
adapter.refreshNotifyItemChanged(position, PayloadAdapter.PAYLOAD_COLLECT);
// adapter里额外再继承 bindViewPayloads 方法
@Override
protected void bindViewPayloads(@NonNull BaseBindingHolder holder, @NonNull DataItemBean bean, @NonNull ItemPayloadBinding binding, int position, @NonNull List<Object> payloads) {
// 删除掉这一行,自己处理,不走bindView()
// super.bindViewPayloads(holder, bean, binding, position, payloads);
for (Object p : payloads) {
int code = (int) p;
switch (code) {
case PAYLOAD_ZAN:
binding.tvZan.setText(bean.getIsZan() == 1 ? "已赞" : "点赞");
break;
case PAYLOAD_COLLECT:
binding.tvCollect.setText(bean.getIsCollect() == 1 ? "已收藏" : "收藏");
break;
default:
break;
}
}
}
- 新增处理 横向宫格分割线
- 解决setStateView可能存在的错误
- 优化在ViewPage2里使用时,使用下拉刷新的处理逻辑
- 处理在ViewPager2中下拉刷新时左右移动中断的问题,可setDispatchTouch(false)取消处理
- 增加setStateViewEnabled(boolean stateViewEnabled, boolean isRemoveRefresh),状态布局可直接remove
- 优化
OnItemFilterClickListener
和OnItemChildFilterClickListener
代码 - 更改加载更多View的进度条默认颜色,默认取
colorAccent
- 新增
-
OnItemFilterClickListener
item防止重复点击 -
OnItemChildFilterClickListener
item子view防止重复点击
-
fix
if (!adapter.hasObservers()) { adapter.registerAdapterDataObserver(mDataObserver); }
- 最后一行显示即加载,不必完全显示
- fix setSpanSizeLookup会发生错乱 issues/13
- 增加可设置Skeleton骨架图
- 增加悬浮item设置
- 优化destroy的操作
- [修复] 添加瀑布流分割线的问题
- [修复] 在指定位置添加一组数据的问题
- [新增] 使用多类型列表代码示例
- [新增] 使用自定义横向加载更多布局示例
- [优化] 代码优化
- [新增] 下拉刷新延迟加载控制
- [新增] 设置线性布局分割线可直接设置颜色等,处理滚动条不到顶的问题
- 优化:自动在holder里setByRecyclerView(),添加子view的点击长按事件时不需要额外执行set操作。#4
- 增加item及item子view的点击/长按示例
- 1.增加子View的点击和长按事件
- 2.不设置下拉刷新监听也可以使用下拉刷新动画,只需设置开关,
recyclerView.setRefreshEnabled(true);
- 3.修复下拉后再次上滑时出现的卡顿问题
- 4.BaseBindingAdapter完善
- 增加setStateView()方法,可以设置加载中/加载错误等状态
- 修复下拉出现刷新头后不能再连续上拉
- 增加正在加载更多的状态
- 增加正在下拉刷新的状态
- 去掉
app_name
翻译
- 1.增加了GridSpaceItemDecoration,便于一键设置宫格间距
- 2.增加了setOnLoadMoreListener(listener, delayMillis),便于延迟调用加载更多接口
- 3.修复了瀑布流判断是否全屏的逻辑
- 4.修复了不足一屏上滑再下滑时的刷新逻辑
- 5.文件夹与资源文件重命名,防止与项目文件重名
- 1.完善分割线的设置,更方面简介(grid分割线正在完善)
- 2.可直接通过layoutId添加头尾空布局
- 3.优化上拉刷新/加载更多布局代码
- 4.修复自定义布局类作用域问题
- 5.BindingHolder调换参数顺序,统一位置
- 6.增加添加分割线示例
- 7.添加自定义网易云音乐下拉刷新和加载更多布局示例
由于项目大幅完善阶段,可能变动api较大,忘见谅,有问题可直接提issues,谢谢
- 修复了BaseLoadMore/BaseRefreshHeader作用域,使其可以自定义布局
- 1.修复了使用SwipeRefreshLayout下拉刷新时会加载更多的Bug
- 2.修改了判断是否全满一屏的逻辑
- 3.更改了方法名:setRefreshing(refreshing)传入true设置刷新
- 1.Change minSdk 14
- 2.Fix preview bug
- 3.Fix 修复到底重置后不能上拉刷新的Bug
- 4.防止和系统Api重名,更名为ByDividerItemDecoration
- 5.setAdapter时重置状态
- Fix 修复到底重置后不能上拉刷新的Bug
- 1.Change minSdk 14
- 2.Fix preview bug
- 1.支持 下拉刷新、加载更多
- 2.可设置自定义 下拉刷新布局 和 加载更多布局
- 3.添加/移除 HeaderView、FooterView
- 4.设置空布局 EmptyView
- 5.添加item的点击/长按事件
- 6.可随意切换 自带下拉刷新布局 / SwipeRefreshLayout
- 7.优化过的BaseRecyclerAdapter
- 8.优化过的BaseListAdapter
- 9.结合DataBinding (RecyclerView / ListView)
- 10.默认使用AndoridX,且支持Support
1 引入及极速设置
- 2.1 使用自带下拉刷新
- 2.2 使用加载更多
- 2.3 添加item点击事件
- 2.4 添加item长按事件
- 2.5 addHeaderView
- 2.6 addFooterView
- 2.7 setStateView
- 2.8 不满一屏不加载
- 2.9 加载更多底部间距
- 2.10 自定义下拉刷新
- 2.11 自定义加载更多
- 2.12 子View点击事件
- 2.13 子View长按事件
- 2.14 item 局部刷新
3 Adapter
- 3.1 单类型列表
- 3.2 单类型列表(databinding)
- 3.3 多类型列表实现