找到RecyclerView的最后一行方法的封装
来源:互联网 发布:《简明python教程》 编辑:程序博客网 时间:2024/06/07 09:04
public class FindLastItem {//无论是什么的Manager都可以进行这个类来判断,并且成功了就发送一条广播
private RecyclerView recyclerView;
private Context context;
public FindLastItem(RecyclerView recyclerView, Context context) { this.recyclerView = recyclerView; this.context = context;}public void refresh() { recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { //当前RecyclerView显示出来的最后一个的item的position int lastPosition = -1; //当前状态为停止滑动状态SCROLL_STATE_IDLE时 if (newState == RecyclerView.SCROLL_STATE_IDLE) { RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); if (layoutManager instanceof GridLayoutManager) { //通过LayoutManager找到当前显示的最后的item的position lastPosition = ((GridLayoutManager) layoutManager).findLastVisibleItemPosition(); } else if (layoutManager instanceof LinearLayoutManager) { lastPosition = ((LinearLayoutManager) layoutManager).findLastVisibleItemPosition(); } else if (layoutManager instanceof StaggeredGridLayoutManager) { //因为StaggeredGridLayoutManager的特殊性可能导致最后显示的item存在多个,所以这里取到的是一个数组 //得到这个数组后再取到数组中position值最大的那个就是最后显示的position值了 int[] lastPositions = new int[((StaggeredGridLayoutManager) layoutManager).getSpanCount()]; ((StaggeredGridLayoutManager) layoutManager).findLastVisibleItemPositions(lastPositions); lastPosition = findMax(lastPositions); } // 时判断界面显示的最后item的position是否等于itemCount总数-1也就是最后一个item的position //如果相等则说明已经滑动到最后了 //发送一条广播通知更新数据 if (lastPosition == recyclerView.getLayoutManager().getItemCount() - 1) { Intent intent = new Intent("UP_DATA"); context.sendBroadcast(intent); } } } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { } });}private int findMax(int[] lastPositions) { int max = lastPositions[0]; for (int value : lastPositions) { if (value > max) { max = value; } } return max;}
}
3 0
- 找到RecyclerView的最后一行方法的封装
- DataGridView最后一行不排序的方法
- 批处理提取文本文件第一行跟最后一行的方法
- 最后一行的数是几
- tabelView滑动到最后一行 第一行 任意一行的方法
- 查找excel表最后一行的方法之一
- Android Recyclerview的封装
- RecyclerView 的简单封装
- 业余时间:RecyclerView的封装
- recyclerView的简单封装
- RecyclerView.Adapter的封装
- DataGridView最后一行 的问题
- dataGridView的最后空白一行
- Java中找到每月第一天、最后一天的方法
- 如果通过简单的方法选择分组的第一行(或最后一行)数据(oracle)
- recyclerView的 BaseAdapter的封装
- Recyclerview Adapter 的简单封装
- RecyclerView.Adapter 的简单封装
- 跟小博老师一起学JSP ——内置对象
- {搬运}C++卡常技巧
- C# 生成验证码图片时消除锯齿
- Navicat for MYSQL
- 我的Linux旅途
- 找到RecyclerView的最后一行方法的封装
- 实习面试TOUTIAO
- 2007浙大复试机试题代码
- 小问题
- hpu-1057: 天平平衡
- 操作小技巧集锦
- C++
- codeforces 779A
- 微信小程序改变全局变量