ViewPager嵌套Fragment来回滑动重新加载数据

来源:互联网 发布:傲剑坐骑数据 编辑:程序博客网 时间:2024/05/01 14:14

在ViewPager中嵌套使用Fragment,他会预加载第二页的数据,但是滑动到第三页的Fragment,前面的Fragment的数据又被清空了,又要重新加载数据,下面提供两个解决办法:

第一种解决方案:

继承FragmentPagerAdapter 重写@Override
       public void destroyItem (View container, int position, Object object) {
            
      }
方法;
将当中的super(XXX)去掉

第二种解决方案:

继承PagerAdapter,重写destroyItem()和instantiateItem()方法

public class MainPagerAdapter extends PagerAdapter {     private List<Fragment> fragments;     private FragmentManager manager;     public MainPagerAdapter(List<Fragment> fragments, FragmentManager manager) {          super();          this.fragments = fragments;          this.manager = manager;     }     @Override     public int getCount() {          return fragments.size();     }     @Override     public boolean isViewFromObject(View view, Object object) {          return view == object;     }     @Override     public void destroyItem(ViewGroup container, int position, Object object) {          container.removeView(fragments.get(position).getView());     }     @Override     public Object instantiateItem(ViewGroup container, int position) {          Fragment fragment = fragments.get(position);          if (!fragment.isAdded()) {               FragmentTransaction transaction = manager.beginTransaction();               transaction.add(fragment, fragment.getClass().getSimpleName());               transaction.commitAllowingStateLoss();               manager.executePendingTransactions();          }          if (fragment.getView().getParent() == null) {               container.addView(fragment.getView());          }          return fragment.getView();     }}


7 0