Android RecyclerView 下拉加载更多数据的问题

这段时间项目需求,需要下拉刷新数据列表,此类控件已经有许多大神已经有博客和文章了,SwipeRefreshLayout+RecyclerView。思路是继承SwipeRefreshLayout,获取其子元素即数据列表控件,并监听列表控件的滚动事件,然后做出相应的处理。

public class SwipeRefreshLoadLayout extends SwipeRefreshLayout{

private RecyclerView recyclerView;

private OnLoadMoreListener onLoadMoreListener;

publicSwipeRefreshLoadLayout(Context context, AttributeSet attrs) {

super(context, attrs);

}

@Override

protected void onLayout(boolean changed,int left,int top,int right,int bottom) {

super.onLayout(changed, left, top, right, bottom);

if(recyclerView==null) {

if(getChildCount() >0) {

if(getChildAt(0) instanceof RecyclerView) {//獲取列表控件,可以是ListView

recyclerView= (RecyclerView) getChildAt(0);

OnScroll();

}

}

}

}

voidOnScroll(){

recyclerView.addOnScrollListener(newRecyclerView.OnScrollListener() {

@Override

public void onScrollStateChanged(RecyclerView recyclerView,int newState) {

super.onScrollStateChanged(recyclerView, newState);

LinearLayoutManager linearLayoutManager= (LinearLayoutManager) recyclerView.getLayoutManager();

//如果recyclerView当前在屏幕最底部的item的索引等于adapter的数据集长度,说明已经滑到了底部可以触发加载

if(linearLayoutManager.findLastCompletelyVisibleItemPosition()==recyclerView.getAdapter().getItemCount()-1){

onLoadMoreListener.onLoadMore();

}

}

});

}

public interface OnLoadMoreListener {

void onLoadMore();

}

public void setOnLoadMoreListener(SwipeRefreshLoadLayout.OnLoadMoreListener onLoadMoreListener) {

this.onLoadMoreListener= onLoadMoreListener;

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容