问题描述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