|
|
@@ -1,108 +1,76 @@
|
|
|
package com.miekir.mvp.view;
|
|
|
|
|
|
+import android.os.Bundle;
|
|
|
+import android.view.View;
|
|
|
+
|
|
|
+import androidx.annotation.NonNull;
|
|
|
+import androidx.annotation.Nullable;
|
|
|
+
|
|
|
import com.miekir.mvp.base.BaseFragment;
|
|
|
+import com.miekir.mvp.presenter.BasePresenter;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
|
|
|
-// 第三个参数的类型
|
|
|
-//String objTypeName = method.getGenericParameterTypes()[2].toString();
|
|
|
-//if (objectParamsList.contains(objTypeName)) {
|
|
|
-// throw new AssertionError("第3个参数为" + objTypeName + "的方法有多个,应该合并为一个方法");
|
|
|
-//}
|
|
|
-//objectParamsList.add(objTypeName);
|
|
|
public abstract class BaseMvpFragment extends BaseFragment implements IView {
|
|
|
-// /**
|
|
|
-// * 是否被创建了
|
|
|
-// */
|
|
|
-// protected boolean isViewCreated;
|
|
|
-// /**
|
|
|
-// * 当前是否可见
|
|
|
-// */
|
|
|
-// protected boolean isUIVisible;
|
|
|
-//
|
|
|
-// private List<Method> mDataMethodList = new ArrayList<>();
|
|
|
-// private List<BasePresenter> mInjectPresenters = new ArrayList<>();
|
|
|
-//
|
|
|
-// private volatile int mLoadingNum;
|
|
|
-// @Override
|
|
|
-// public synchronized int onLoadTimeChange(boolean isAdd, String message) {
|
|
|
-// if (isAdd) {
|
|
|
-// mLoadingNum = mLoadingNum +1;
|
|
|
-// } else {
|
|
|
-// mLoadingNum = mLoadingNum -1;
|
|
|
-// }
|
|
|
-//
|
|
|
-// if (mLoadingNum <= 0) {
|
|
|
-// mLoadingNum = 0;
|
|
|
-// dismissLoading();
|
|
|
-// } else {
|
|
|
-// showLoading(message);
|
|
|
-// }
|
|
|
-// return mLoadingNum;
|
|
|
-// }
|
|
|
-//
|
|
|
-// @Override
|
|
|
-// public void onTaskCancel() {
|
|
|
-// mLoadingNum = 0;
|
|
|
-// for (BasePresenter viewModel : mInjectPresenters) {
|
|
|
-// viewModel.onTaskCancel();
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// @Override
|
|
|
-// public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
|
|
-// ViewHelper.initVariables(mInjectPresenters, this, this);
|
|
|
-// ViewHelper.initCallbacks(mDataMethodList, getClass());
|
|
|
-//
|
|
|
-// isViewCreated = true;
|
|
|
-// onViewInit();
|
|
|
-// loadData();
|
|
|
-// }
|
|
|
-//
|
|
|
-//
|
|
|
-//
|
|
|
-// /**
|
|
|
-// * View初始化
|
|
|
-// */
|
|
|
-// protected abstract void onViewInit();
|
|
|
-//
|
|
|
-// @Override
|
|
|
-// public void setUserVisibleHint(boolean isVisibleToUser) {
|
|
|
-// super.setUserVisibleHint(isVisibleToUser);
|
|
|
-// isUIVisible = isVisibleToUser;
|
|
|
-// if (isVisibleToUser) {
|
|
|
-// loadData();
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// /**
|
|
|
-// * 懒加载,当Fragment可见的时候,再去加载数据
|
|
|
-// * 应用初始化会先调用完所有的setUserVisibleHint再调用onViewCreated,然后切换的时候,就只调用setUserVisibleHint了
|
|
|
-// */
|
|
|
-// private void loadData() {
|
|
|
-// if (isViewCreated && isUIVisible) {
|
|
|
-// isViewCreated = false;
|
|
|
-// isUIVisible = false;
|
|
|
-// onLazyLoad();
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// /**
|
|
|
-// * 懒加载,初始化加载数据
|
|
|
-// */
|
|
|
-// protected abstract void onLazyLoad();
|
|
|
-//
|
|
|
-// @Override
|
|
|
-// public void onDestroyView() {
|
|
|
-// super.onDestroyView();
|
|
|
-// ViewHelper.clearPresenters(mInjectPresenters, this);
|
|
|
-// mDataMethodList.clear();
|
|
|
-// }
|
|
|
-//
|
|
|
-// /**
|
|
|
-// * 回调
|
|
|
-// * @param result
|
|
|
-// */
|
|
|
-// @Override
|
|
|
-// public void onDataResult(DataResult result) {
|
|
|
-// ViewHelper.handleDataResult(this, mDataMethodList, result);
|
|
|
-// }
|
|
|
+ /**
|
|
|
+ * 是否被创建了
|
|
|
+ */
|
|
|
+ protected boolean isViewCreated;
|
|
|
+ /**
|
|
|
+ * 当前是否可见
|
|
|
+ */
|
|
|
+ protected boolean isUIVisible;
|
|
|
+
|
|
|
+ private List<BasePresenter<?>> mInjectPresenters = new ArrayList<>();
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onProgressTaskCancel() {
|
|
|
+ for (BasePresenter<?> presenter : mInjectPresenters) {
|
|
|
+ presenter.onProgressTaskCancel();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
|
|
+ ViewHelper.initVariables(mInjectPresenters, this, this);
|
|
|
+
|
|
|
+ isViewCreated = true;
|
|
|
+ onViewInit();
|
|
|
+ loadData();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * View初始化
|
|
|
+ */
|
|
|
+ protected abstract void onViewInit();
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setUserVisibleHint(boolean isVisibleToUser) {
|
|
|
+ super.setUserVisibleHint(isVisibleToUser);
|
|
|
+ isUIVisible = isVisibleToUser;
|
|
|
+ if (isVisibleToUser) {
|
|
|
+ loadData();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 懒加载,当Fragment可见的时候,再去加载数据
|
|
|
+ * 应用初始化会先调用完所有的setUserVisibleHint再调用onViewCreated,然后切换的时候,就只调用setUserVisibleHint了
|
|
|
+ */
|
|
|
+ private void loadData() {
|
|
|
+ if (isViewCreated && isUIVisible) {
|
|
|
+ isViewCreated = false;
|
|
|
+ isUIVisible = false;
|
|
|
+ onLazyLoad();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 懒加载,初始化加载数据
|
|
|
+ */
|
|
|
+ protected abstract void onLazyLoad();
|
|
|
+
|
|
|
}
|