通过在onPageChangeListener中调用懒加载,当Fragment切换到下一个或者切换中进行懒加载。
1、先写一个接口
原因:
1、隔离具体实现(不依赖具体Fragment,否则在用的时候就需要一个一个对具体实现进行判断)
2、仅处理需要懒加载的Fragment
public interface ILazyLoad {
void lazyLoad();
}
2、实现接口
这里进行isLoaded标识,标识是否已经加载。当然也可以根据具体需要在以下第三步进行统一处理。
public class FileManagementFragment extends BaseFragment implements ILazyLoad {
public void lazyLoad() {
if (isLoaded) return;
this.storageList = getAllStorage();
showStorageUsage();
showAvailableStorage();
this.isLoaded = true;
}
}
3、统一处理懒加载
this.viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (positionOffsetPixels < viewPager.getWidth() >> 1) return;//是否滑动超过一半
if (position >= adapter.getCount() - 1) return;//是否滑到了最后
Fragment item = adapter.getItem(position + 1);//拿到下一个Fragment(这里是position是上一个,因为这个事件是滑动中触发)
if (!(item instanceof ILazyLoad)) return;//是否实现特定接口
//触发懒加载
ILazyLoad lazyLoad = ((ILazyLoad) item);
lazyLoad.lazyLoad();
}
});