码迷,mamicode.com
首页 > 其他好文 > 详细

【BUG解析】调用PagerAdapter.notifyDataSetChanged()不更新

时间:2015-03-13 20:55:52      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

  • 问题描述

Android开发一个广告显示的页面,支持左右滑动,当数据加载完成之后想刷新显示

调用mAdapter.notifyDataSetChanged() 来促发却没效果

  • 问题调查

instantiateItem()在notifyDataSetChanged()后并没有被触发

  • 问题修改

    // getItemPosition的返回值将决定instantiateItem是否更新
    @Override
    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }


  • 原理分析


  • getItemPosition()

    • 该函数用以返回给定对象的位置,给定对象是由 instantiateItem() 的返回值。

    • 在 ViewPager.dataSetChanged() 中将对该函数的返回值进行判断,以决定是否最终触发 PagerAdapter.instantiateItem() 函数。

    • 在 PagerAdapter 中的实现是直接传回 POSITION_UNCHANGED。 如果该函数不被重载,则会一直返回 POSITION_UNCHANGED,从而导致 ViewPager.dataSetChanged() 被调用时,认为不必触发 PagerAdapter.instantiateItem()。很多人因为没有重载该函数,而导致调用
      PagerAdapter.notifyDataSetChanged() 后,什么都没有发生。


  • 参考网站

http://www.apkbus.com/android-90417-1-1.html


【BUG解析】调用PagerAdapter.notifyDataSetChanged()不更新

标签:

原文地址:http://my.oschina.net/u/2273965/blog/386838

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!