在使用ViewPager的时候绑定Fragment时,这时刷新就不像在ListView的adapter.notifyDataSetChanged()刷新一样,这时如果调用
ViewPager的Adapter的notifyDataSetChanged() 会没有刷新效果
Viewpager 的刷新过程是这样的,在每次调用 PagerAdapter 的 notifyDataSetChanged() 方法时,都会激活 getItemPosition(Object object) 方法,该方法会遍历 ViewPager 的所有 Item(由缓存的 Item 数量决定,默认为当前页和其左右加起来共3页,这个可以自行设定,但是至少会缓存2页),为每个 Item 返回一个状态值(POSITION_NONE/POSITION_UNCHANGED),如果是 POSITION_NONE,那么该 Item 会被 destroyItem(ViewGroup container, int position, Object object) 方法 remove 掉,然后重新加载,如果是 POSITION_UNCHANGED,就不会重新加载,默认是 POSITION_UNCHANGED,所以如果不重写 getItemPosition(Object object),修改返回值,就无法看到 notifyDataSetChanged() 的刷新效果。
所以解决方案如下:
PagerAdapter 的 getItemPosition(Object object) 方法,将返回值固定为 POSITION_NONE。
案例如下:
public class AllAppActivity extends FragmentActivit