ViewPager中Fragment避免重复调用onCreateView方法和可见时加载数据

写在前面:
ViewPager是android很常用的滑动组件,初次使用难免会遇到一些小的问题。在次记录两条:(1)来回滑动时候onCreateView方法会重复调用,这样第一次加载出来的一些数据会出现丢失,View也会重复的进行初试化。
(2)一个ViewPaget嵌入多个Fragment,如果不做特殊处理,那么所有fragment在创建时候都会进行数据的加载,这样很可能会造成卡顿。

一、避免重复调用onCreateView()方法:

 private View mRootView;

   @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        if (mRootView!=null) {  // mRootView 不为null时候,返回之间创建的mRootView,不会再进行初始化操作了
            return mRootView;
        }
        mRootView= LayoutInflater.from(getActivity()).inflate(R.layout.fragment_foodaddfridge,null);
        return mRootView;
    }

二、设置嵌入Fragment可见时候加载数据

 private  int isVisibleCount;  // 每个ViewPager中的Fragment维护一个标记状态位
// setUserVisibleHint() 是Fragment的重写方法,isVisibleToUser 是否可见
  @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser&&isVisibleCount==0){
            getFoodByCategory();     // 当可见并且没有加载过数据时候,进行数据加载
        }
    }

你可能感兴趣的:(ViewPager中Fragment避免重复调用onCreateView方法和可见时加载数据)