本文主要是介绍ViewPager调用notifyDataSetChanged()不刷新问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近写项目的时候遇到一个问题,个人主页使用viewpage,设置三张图片,点击编辑 跳转到编辑页面修改图片内容和排序,返回来重新设置viewpage数据,调用notifyDataSetChanged(),结果数据没变化,查资料看到Viewpager 的刷新过程是这样的:
在每次调用 PagerAdapter 的 notifyDataSetChanged()
方法时,都会激活 getItemPosition(Object object) 方法,该方法会遍历 ViewPager 的所有 Item(由缓存的 Item 数量决定,默认为当前页和其左右加起来共3页,这个可以自行设定,但是至少会缓存2页),
为每个 Item 返回一个状态值(POSITION_NONE/POSITION_UNCHANGED),如果是 POSITION_NONE,
那么该 Item 会被 destroyItem(ViewGroup container, int position, Object object) 方法 remove 掉,
然后重新加载,如果是 POSITION_UNCHANGED,就不会重新加载,默认是 POSITION_UNCHANGED,
所以如果不重写 getItemPosition(Object object),修改返回值,就无法看到 notifyDataSetChanged()
的刷新效果。
最简单的解决方案
那就是直接一刀切:重写 PagerAdapter 的 getItemPosition(Object object) 方法,将返回值固定为
POSITION_NONE。
这篇关于ViewPager调用notifyDataSetChanged()不刷新问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!