当前位置: 首页 > news >正文

viewpager2导致的mViews下标越界问题

viewpager2种在嵌套一个RecyclerView场景:左右滑动,上下滑动,出现mViews为null问题。

//RecyclerView布局为
new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL)

由于使用viewpager2导致布局缓存的销毁,会导致调用了StaggeredGridLayoutManager#onDetachedFromWindow方法。由于我没有设置viewpager2的缓存数量(启动不多加载,启动快),在频繁切换的时候,会调用此方法calculateCachedStart。

class Span {static final int INVALID_LINE = Integer.MIN_VALUE;ArrayList<View> mViews = new ArrayList<>();int mCachedStart = INVALID_LINE;int mCachedEnd = INVALID_LINE;int mDeletedSize = 0;final int mIndex;Span(int index) {mIndex = index;}int getStartLine(int def) {if (mCachedStart != INVALID_LINE) {return mCachedStart;}if (mViews.size() == 0) {return def;}calculateCachedStart();return mCachedStart;}void calculateCachedStart() {final View startView = mViews.get(0);final LayoutParams lp = getLayoutParams(startView);mCachedStart = mPrimaryOrientation.getDecoratedStart(startView);if (lp.mFullSpan) {LazySpanLookup.FullSpanItem fsi = mLazySpanLookup.getFullSpanItem(lp.getViewLayoutPosition());if (fsi != null && fsi.mGapDir == LayoutState.LAYOUT_START) {mCachedStart -= fsi.getGapForSpan(mIndex);}}}
}

导致方法【calculateCachedStart】中的mViews.get(0)出现了下标越界。。。

设置一下页面缓存数,让它不要销毁,就没事了。

 // 设置左右缓存的页数为1binding.supermarketVp.setOffscreenPageLimit(1);

http://www.lryc.cn/news/150364.html

相关文章:

  • 无涯教程-JavaScript - NORMSDIST函数
  • Mysql查询(SELECT)
  • 基于JAVAEE技术的ssm校园车辆管理系统源码和论文
  • opencv-人脸识别
  • 九、idSpanMap使用基数树代替原本的unordered_map 十、使用基数树前后性能对比
  • 政府科技项目验收全流程分享
  • 基于Matlab实现生活中的图像信号分类(附上源码+数据集)
  • YOLOv5算法改进(12)— 替换主干网络之Swin Transformer
  • php 权限节点的位运算
  • ClickHouse进阶(六):副本与分片-2-Distributed引擎
  • Git和Github的基本用法
  • 279. 完全平方数
  • 一篇文章学会C#的正则表达式
  • 智慧工地源码 智慧大屏、手机APP、SaaS模式
  • C# WPF监听USB插入拨出
  • Prometheus监控(三)架构
  • linux kvm网桥br简单理解和持久化配置
  • 【LeetCode-中等题】105. 从前序与中序遍历序列构造二叉树
  • uniapp 配置网络请求并使用请求轮播图
  • c#在MVC Api(.net framework)当中使用Swagger,以及Demo下载
  • Linux 常见命令操作
  • 前端实习第七周周记
  • DevOps理念:开发与运维的融合
  • windows下Mysql安装配置教程
  • [开发|java] activeJdbc的model的isModified方法说明
  • 23062day6
  • MiniExcel
  • 全球公链进展| Shibarium重新开放跨链桥提款;USDC计划在Polygon PoS等 6 个新区块链上推出
  • 关于C# halcon内存泄漏的研究
  • 高精度地图定位在高速公路自动驾驶系统中的应用