viewpager和fragment图片轮播数据重复加载
2016-09-25 本文已影响1030人
sun_goden

-
当使用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();
}
这是完成后的效果图

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