写在前面:
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(); // 当可见并且没有加载过数据时候,进行数据加载
}
}
网友评论