我在這里直接封裝成了一個類,直接上代碼:
/**
* Recycler分頁
*
* @author http://www.lovecoder.cn/
* Created by haibo on 2016/7/28.
*/
public class RecyclerPageView extends RecyclerView {
public RecyclerPageView(Context context) {
super(context);
}
public RecyclerPageView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public RecyclerPageView(Context context, @Nullable AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.addOnScrollListener(new MyOnScrollListener());
}
private class MyOnScrollListener extends RecyclerView.OnScrollListener {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
if (newState == SCROLL_STATE_IDLE) {
LayoutManager layoutManager = getLayoutManager();
if (getLayoutManager() instanceof StaggeredGridLayoutManager) {
StaggeredGridLayoutManager layout = (StaggeredGridLayoutManager) layoutManager;
// 獲取瀑布流有多少列
int column = layout.getColumnCountForAccessibility(null, null);
int positions[] = new int[column];
// 獲取lastItem的positions
layout.findLastVisibleItemPositions(positions);
for (int i = 0; i < positions.length; i++) {
/**
* 判斷lastItem的底邊到recyclerView頂部的距離
* 是否小于recyclerView的高度
* 如果小于或等于 說明滾動到了底部
*/
if (positions[i] >= (layout.getItemCount() - column)
&& layout.findViewByPosition(positions[i]).getBottom() <= getHeight()) {
Log.d("admin", "到底部了");
break;
}
}
} else if (getLayoutManager() instanceof LinearLayoutManager) {
LinearLayoutManager layout = (LinearLayoutManager) layoutManager;
int position = layout.findLastVisibleItemPosition();
if (position - 1 == layout.getItemCount()
&& layout.findViewByPosition(position).getBottom() <= getHeight()) {
Log.d("admin", "到底部了");
}
}
}
super.onScrollStateChanged(recyclerView, newState);
}
}
}
如果感覺幫助到你了,趕快給個贊吧。哈哈
轉載請注明出處:http://www.lovecoder.cn/855.html