viewpager和fragment图片轮播数据重复加载

viewpager和fragment图片轮播数据重复加载_第1张图片
喵喵.jpg
  • 当使用viewpager来实现图片轮播效果时,会发现滑动到其他fragment时,因为viewpage有预加载,所以会出现里面的图片重复加载问题,而且底下的导航就会失去效果,如图:


    17-42-37-9-25-21002.gif
  • 经过千辛万苦查到两种解决方法:
    方法一: 继承FragmentPagerAdapter, 重写destoryItem方法,去掉supper();
    重写destoryItem移除item
   @Override
   public void destroyItem(ViewGroup container, int position, Object object) {
   }

方法二:第二种解决方案:继承PagerAdapter,重写destroyItem()和instantiateItem()方法

   @Override
   public void destroyItem(ViewGroup container, int position, Object object) {
      container.removeView(list.get(position).getView());
   }
 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();
     }

这是完成后的效果图


16-59-23-9-25-12531.gif

哈哈,终于ok了,这个问题让我想到viewpager中的fragment重复加载tab,相信这个方法也是可以解决的,可以尝试一下。

你可能感兴趣的:(viewpager和fragment图片轮播数据重复加载)