记ViewPager在使用中踩过的坑(刷新bug,空白页bug)

博客详细记录了在使用ViewPager时遇到的两个主要问题:ViewPagerAdapter的刷新问题和ViewPager子元素少于3时出现的bug。刷新问题的关键在于重写`destroyItem`方法,确保正确更新item状态。当ViewPager的子元素不足3个时,会导致预加载问题和空白页错误。解决方案包括在子元素数量不足时增加元素,以及在适配器中保存真实数量。
摘要由CSDN通过智能技术生成

ViewPager是现在比较常用的图片轮播容器,本人在项目中做循环轮播时,踩了不少坑,特开一贴记录。

ViewPagerAdapter刷新问题

这是个老生常谈的问题了,网上的解决方案也一堆,这里主要记录一下问题产生的原因。

每次调用notifyDataSetChanged()时,都会触发getItemPosition(Object object)。该方法会遍历viewpager的所有item,为每个item返回一个状态值(POSITION_NONE/POSITION_UNCHANGED)

如果item的位置如果没有发生变化,则返回POSITION_UNCHANGED。如果返回了POSITION_NONE,表示该位置的item已经不存在了。默认的实现是假设item的位置永远不会发生变化,而返回POSITION_UNCHANGED。 所以如果我们不重写getItemPosition(Object object),就无法看到刷新效果。

对于这两种状态:
如果是POSITION_NONE,那么该item会被destroyItem(…)方法remove掉,然后重新加载;

如果是POSITION_UNCHANGED,就不会重新加载。

所以我们解决的方案也明了了:初始化item

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值