ViewPager与Fragment配合使用可以实现滑屏的效果,如下图所示
: 图一 图二
我们有时会不满足于现状,会做一些改变,于是当我们需要改变ViewPager中Fragment的个数或内容里我们会用一个适配器FragmentPagerAdapter,这个适配器初始化:
mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public int getCount() {
// TODO Auto-generated method stub
Log.i("FragmentPagerAdapter", "getCount()==>" + mFragments.size());
return mFragments.size();
}
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
Log.i("FragmentPagerAdapter", "getItem()==>" + arg0);
return mFragments.get(arg0);
}
};
当我修改mFragments的内容时,然后mAdapter.notifyDataSetChanged()方法时,界面内容却不更新,打印log进行分析,发现getItem方法没有执行.这是为什么呢?
一开始我也郁闷了n久,都不知道原因.经过一番分析和网上搜索相关资料后,找到了两个解决办法:
第一种是,不需要使用mAdapter.notifyDataChanged()方法,直接使用适配器FragmentStatePagerAdapter类, 不使用FragmentPagerAdapter类.FragmentStatePagerAdapter类也可以重写方法getCount(), getItem(int arg0),
如下代码:
mAdapter = new FragmentStatePagerAdapter(getSupportFragmentManager()) {
@Override
public int getCount() {
// TODO Auto-generated method stub
Log.i("FragmentPagerAdapter", "getCount()==&