【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

相關文章
相關標籤/搜索