ViewPager使用細節,如何設置成每次只初始化當前的Fragment,其他的不初始化(提示:Fragment懶加載)?


自定義一個 LazyLoadFragment 基類,利用 setUserVisibleHint 和 生命周期方法,通過對 Fragment 狀態判斷,進行數據加載,並將數據加載的接口提供開放出去,供子類使用。然后在子類 Fragment 中實現 requestData 方法即可。這里添加了一個 isDataLoaded 變量,目的是避免重復加載數據。考慮到有時候需要刷新數據的問題,便提供了一個用於強制刷新的參數判斷。

 

public abstract class LazyLoadFragment extends BaseFragment {
protected boolean isViewInitiated;
protected boolean isDataLoaded;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
isViewInitiated = true;
prepareRequestData();
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
prepareRequestData();
}
public abstract void requestData();
public boolean prepareRequestData() {
return prepareRequestData(false);
}
public boolean prepareRequestData(boolean forceUpdate) {
if (getUserVisibleHint() && isViewInitiated && (!isDataLoaded || forceUpdate)) {
requestData();
isDataLoaded = true;
return true;
}
return false;
}
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM