ViewPager2 + fragmet 删除某个fragment

33 阅读1分钟

在进行 ViewPager2 + Fragment 进行滑动的展示时,当需要删除中间某个 fragment 时,出现了 明明该删除的页面,却依旧显示

原有问题如下 当前页面为 1,2,3,4,5,6.... 当删除某个页面 比如 1 时,应该为 2,3,4,5,6.... 但是实际显示的却是 1,3,4,5,6..... 除非 滑动到缓存外的页面,再回来时 为正确的 2,3,4,5,6.....

修改方法为 在 adapter里 添加实现方法 getItemId(position:Int) 返回 唯一 ID,勿直接使用 position 来进行处理。需数据源或者其他的唯一 ID 进行返回

getItemId()方法的解释如下

Default implementation works for collections that don't add, move, remove items.(默认实现适用于不添加、移动、删除项目的集合。)也就是说 ,不对现有的列表进行增删移动则不需要进行实现,否则需要实现。

image.png 在截图的位置里,会对 itemId 进行判断,如果不实现,则类似于当下数据没有变化,即 新的与老的 没有变化,就不会去更新当下需要显示的新的页面