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; //初始化
}
}