1.4.1
ListView的BaseListAdapter 优化和新增 setNewData()
public void setNewData(List<T> data) {
this.mData = data == null ? new ArrayList<T>() : data;
notifyDataSetChanged();
}
1.4.0
adapter里新增:
setPageEmptyView(View emptyView)
setPageData(boolean isFirstPage, List<T> data)
在adapter里可单独设置emptyView,然后再使用setPageData
1.3.6
fix 优化判断是否能加载更多逻辑
public boolean isLoadMoreEnabled() {
return mLoadMoreListener != null && (mLoadMoreEnabledStatus == 1 || mLoadMoreEnabledStatus == 2);
}
1.3.5
/**
* 设置数据 和 处理空视图。
* 如果想列表上方状态视图(StateView),不能使用这个方法。
*
* @param isFirstPage 是否是第一页
* @param data 需要设置的数据
* @param emptyView 空视图的View
*/
public void setPageData(boolean isFirstPage, List<T> data, View emptyView)
增加setPageData()
一行代码即可处理列表显示数据。
1.3.3
- 内存释放和临界状态的处理
1.3.2
fix item 悬浮置顶加入下拉刷新 ,悬浮错位 https://github.com/youlookwhat/ByRecyclerView/issues/57
相关修改:https://github.com/youlookwhat/ByRecyclerView/commit/f9ce5b1cb34d801e107c4680a059153b98dc4c0f 感谢提出者 PYJVIP,还给了解决方案。
if (StickyHeaderHandler.TYPE_STICKY_VIEW == mBaseAdapter.getItemViewType(i)) {
int customTopItemViewCount = mBaseAdapter.getCustomTopItemViewCount();
mHeaderPositions.add(i + customTopItemViewCount);
}
1.3.1
fix possible IndexOutOfBoundsException https://github.com/youlookwhat/ByRecyclerView/issues/52
修复可能发生的角标越界异常
if (mData != null && mData.size() > 0 && position < mData.size()) {
return mData.get(position);
}
更新JitPack配置
1.3.0
增加自动加载更多功能,即相比以前只用在设置监听时加上状态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;
}
1.2.1
[完善] 使用refreshNotifyItemChanged(position, payload);
不继承bindViewPayloads
时,默认使用bindView
处理。
// 设置要局部刷新的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;
}
}
}