这里就将一下思路。
一般来说自定义的loadmore在recyclerview是通过滚动监听到你指定的位置来触发相应的代码处理逻辑。
那么我们就定义一个类来继承RecyclerView.OnScrollListener
public abstract class LoadMoreListener extends RecyclerView.OnScrollListener {
private 你的layoutManager layoutManager;
private int lastVisibleItem,total;//定义最后一个可见的item和总item数量
private int earleCountForAutoLoad=1;//提前一个加载
public abstract void onLoadMore();//外部实现这个方法
public void setEarlyCountForAutoLoad(int earleCountForAutoLoad){
this.earleCountForAutoLoad=earleCountForAutoLoad;;
}//用来备用更改提前多少加载
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == RecyclerView.SCROLL_STATE_IDLE){
if (lastVisibleItem>0&&lastVisibleItem>=total-earleCountForAutoLoad){
onLoadMore();//然后在外部实现onLoadMore
}
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if(recyclerView.getLayoutManager() instanceof GridLayoutManager){
}
}
}
具体实现,不给了。
·步骤,在adapter里设置footview
实现相应逻辑
activity里面
mRecyclerView.addOnScrollListener(new LoadMoreListener() {
@Override
public void onLoadMore() {
你的加载更多的逻辑
}
});
我个人是用来处理加载网络更多的数据,我的接口文档中有params
limit:Integer 请求个数
skip:Integer 起始位置
所以我每次加载更多都要重新发起一条网络请求
如果想复制粘贴可以直接退出这篇文章了