ViewPager異常

1、

      Java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 6, found: 3 Pager id: ...

原因:

       在調用 mAdapter.notifyDataSetChanged 之前,先調用了 viewPager.setOffscreenPageLimit 方法
此方法會調用 ViewPager 的 populate(); 方法,就是在這裏出現了問題:Adapter.getCount() 已經改變,而 mExpectedAdapterCount 由於還沒有調用 notifyDataSetChanged 所以沒有更新。所以拋出異常。

解決:

       先調用 notifyDataSetChanged, 再調用 viewPager.setOffscreenPageLimit

 

2、數據初始化完成之後 ,修改數據 notifyDataSetChanged  無效、

      解決 :需要修改PagerAdapter 中  getItemPosition

         

@Override
public int getItemPosition(Object object) {
      if (isChange) {
            return POSITION_NONE;        //需要數據重新加載
       } else {
            return POSITION_UNCHANGED;   //初始化
        }
 }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章