package com.moral.yunfushao.base;
|
|
import android.os.Bundle;
|
import android.support.v4.app.Fragment;
|
import android.util.SparseArray;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
|
import com.moral.andbrickslib.utils.ToastUtils;
|
import com.moral.andbrickslib.utils.dialog.SweetDialogUtils;
|
import com.moral.andbrickslib.views.EmptyLayout;
|
import com.moral.andbrickslib.views.SweetAlert.SweetAlertDialog;
|
import com.moral.yunfushao.R;
|
|
|
/**
|
* Created by haijiang on 2017/5/2.
|
*/
|
public abstract class BaseLazyFragment extends Fragment implements View.OnClickListener {
|
|
protected EmptyLayout mEmptyLayout;
|
|
protected SweetAlertDialog progressDialog;
|
|
protected ToastUtils mToatUtils;
|
|
private boolean isVisible = false;
|
private boolean isInitView = false;
|
private boolean isFirstLoad = true;
|
|
protected View convertView;
|
private SparseArray<View> mViews;
|
|
protected abstract int getLayoutId();
|
|
protected abstract void initViews();
|
|
protected abstract void initListener();
|
|
protected abstract void initData();
|
|
protected abstract void processClick(View v);
|
|
@Override
|
public void setUserVisibleHint(boolean isVisibleToUser) {
|
super.setUserVisibleHint(isVisibleToUser);
|
if (isVisibleToUser) {
|
isVisible = true;
|
lazyLoad();
|
} else {
|
isVisible = false;
|
}
|
}
|
|
@Override
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
progressDialog = SweetDialogUtils.showProgressDialog(getActivity(),"???????????...", R.color.colorAccent);
|
mToatUtils = new ToastUtils(getActivity());
|
|
mViews = new SparseArray<>();
|
convertView = inflater.inflate(getLayoutId(), container, false);
|
initViews();
|
|
isInitView = true;
|
lazyLoad();
|
return convertView;
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
}
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
}
|
|
@Override
|
public void onDestroyView() {
|
super.onDestroyView();
|
}
|
|
@Override
|
public void onClick(View v) {
|
processClick(v);
|
}
|
|
public <E extends View> E findView(int viewId) {
|
if (convertView != null) {
|
E view = (E) mViews.get(viewId);
|
if (view == null) {
|
view = (E) convertView.findViewById(viewId);
|
mViews.put(viewId, view);
|
}
|
return view;
|
}
|
return null;
|
}
|
|
private void lazyLoad() {
|
if (!isFirstLoad || !isVisible || !isInitView) {
|
return;
|
}
|
initListener();
|
initData();
|
|
isFirstLoad = false;
|
}
|
|
|
protected void initMulitiStatusView(int id) {
|
mEmptyLayout = (EmptyLayout) convertView.findViewById(id);
|
|
mEmptyLayout.setOnLayoutClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
setLoadingView();
|
onErrorPageClick();
|
}
|
});
|
}
|
|
|
protected abstract void onErrorPageClick();
|
|
|
public void setEmptyView() {
|
if(mEmptyLayout == null){
|
return;
|
}
|
mEmptyLayout.setErrorType(EmptyLayout.NODATA);
|
}
|
|
|
public void setErrorView() {
|
if(mEmptyLayout == null){
|
return;
|
}
|
mEmptyLayout.setErrorType(EmptyLayout.NETWORK_ERROR);
|
}
|
|
|
public void setNormalView() {
|
if(mEmptyLayout == null){
|
return;
|
}
|
mEmptyLayout.dismiss();
|
}
|
|
|
public void setLoadingView() {
|
if(mEmptyLayout == null){
|
return;
|
}
|
mEmptyLayout.setErrorType(EmptyLayout.NETWORK_LOADING);
|
}
|
}
|