RecyclerView上拉和下拉
最近为了写一个简易的多选列表功能,使用了RecyclerView,发现如果数据太多的话会发生卡顿,所以决定使用分页,也就是大家常见的上拉加载数据,也有下拉刷新数据,我们这里使用滚动事件addOnScrollListener
来完成这个功能。
上拉加载
在
RecyclerView
上添加监听事件recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); } });
当我们无法上拉以后,以及松开手指以后,触发数据加载
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); // canScrollVertically参数是1是无法上拉 if (!recyclerView.canScrollVertically(1) && newState == RecyclerView.SCROLL_STATE_IDLE) { // 实现数据加载 } } });
下拉刷新
原理跟上拉一样,只是判断无法下拉后,刷新数据
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); // canScrollVertically参数是-1是无法上拉 if (!recyclerView.canScrollVertically(-1) && newState == RecyclerView.SCROLL_STATE_IDLE) { // 实现数据加载 } } });
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。