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 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 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); } }