美文网首页
PagerAdapter数据刷新问题

PagerAdapter数据刷新问题

作者: 满天星爱我 | 来源:发表于2018-03-10 19:13 被阅读4次

    问题:

    在做轮播图时,当后台的轮播图内容发生更改时,调用adapter.notifyDataSetChanged不起作用,通过查资料发现了两种解决方法。

    • 最简单
      PagerAdapter中有个方法getItemPosition(Object object),此方法默认返回 POSITION_UNCHANGED,意为不做处理;当返回 POSITION_NONE时,那么就会去调用destroyItem(...)方法移除当前所有已添加的View,然后调用instantiateItem(...)方法来重新添加View;这种方法有一个弊端,就是我们不需要更新的View也被重新加载了,这样的话就浪费了系统资源。因此这种方法适用于数据量少的情况下。

    • 优化后,只刷新当前显示的页面
      instantiateItem(...)方法中给每个View设置Tag,将当前的position传入,然后在getItemPosition(Object object)方法中通过((View)object).getTag()方法获取position,然后与轮播图当前所显示的View的位置下标(当前位置可以通过回调接口从Activity中传进来)做比较,如果等于,那么就让getItemPosition(Object object)返回当前position,这样的话PagerAdapter就只会移除当前位置的View,并重新创建此View,而并不会刷新所有的View,避免了系统资源的浪费。

    相关文章

      网友评论

          本文标题:PagerAdapter数据刷新问题

          本文链接:https://www.haomeiwen.com/subject/locyfftx.html