Closed liyiheng closed 8 years ago
谢谢反馈哈
EndlessRecyclerOnScrollListener这个类改掉了,你看下有没有加载中的判断。
不知道什么时候的版本,现在如果加载中,直接忽略。 增加了方法:mRefreshRecyclerView.loadMoreComplete();
// LinearLayoutWithRecyclerOnScrollListener.java
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (!isLoading()) {
visibleItemCount = recyclerView.getChildCount();
totalItemCount = mLinearLayoutManager.getItemCount();
firstVisibleItem = mLinearLayoutManager.findFirstVisibleItemPosition();
//totalItemCount > visibleItemCount load more
if (loadMoreEnable && !loading && totalItemCount > visibleItemCount && (totalItemCount - visibleItemCount) <= (firstVisibleItem + visibleThreshold)) {
// End has been reached
loading = true;
pagination++;
onLoadMore(pagination, pageSize);
}
}
}
每次数据加载完成后(不管成功、失败),需要mRefreshRecyclerView.hideFooterView();
public void onSuccess(S result) {
if (result == null || (result instanceof List && ((List)result).size() == 0)) {
if (isDataEmpty()) {
showDataEmptyView();
} else {
showNoMoreDataView();
mRefreshRecyclerView.disableLoadMore();
}
} else {
if (isRefresh) {
onRefreshDataSuccess(result);
} else {
onLoadMoreDataSuccess(result);
}
hideLoadMoreView();
currPage++;
}
}
@Override
public void onAfter() {
if(isRefresh){
hideRefreshView();
}
mRefreshRecyclerView.loadMoreComplete();
if(!isDataEmpty()){
hideDataEmptyView();
}
}
这些状态的切换是很麻烦,等几天把我的二次封装放上来。
thks
可能是我没用对,也可能确有bug
目前暂时解决办法是在EndlessRecyclerOnScrollListener中的onScrollStateChanged()方法中进行判断; 如果距上次触发onScrollStateChanged()时间不到1秒就直接return. 不知道有没有更好的解决办法 我用的不是最新版,由于我目前是直接改了EndlessRecyclerOnScrollListener, 并没有直接换最新. 不知道最新版还有没有这个问题
// 找到了解决办法 //另外, //有时候划动到底部已经没有更多数据,但footer仍然是loading状态, 需要稍微下拉再上划才变成end状态