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

  • 问题描述html

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

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

  • 问题调查ide

instantiateItem()在notifyDataSetChanged()后并无被触发函数

  • 问题修改网站

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


  • 原理分析google


  • getItemPosition()spa

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

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

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


  • 参考网站

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

相关文章
相关标签/搜索