問題描述html
Android開發一個廣告顯示的頁面,支持左右滑動,當數據加載完成以後想刷新顯示java
調用mAdapter.notifyDataSetChanged() 來促發卻沒效果android
問題調查ide
instantiateItem()在notifyDataSetChanged()後並無被觸發函數
問題修改網站
// getItemPosition的返回值將決定instantiateItem是否更新 @Override public int getItemPosition(Object object) { return POSITION_NONE; }
原理分析google
該函數用以返回給定對象的位置,給定對象是由 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