BaseListPresenter
public abstract class BaseListPresenter extends BaseLoadingPresenter {
protected BaseModel model;
protected Map<String, String> mParam;
public <T> void loadData(Context c, final List<T> mData, Class<T> clazz, final boolean isRefresh, boolean isReload) {
mParam.put("currentPage", getcurrentPage(isRefresh, mData) + "");
mParam.put("pageSize", getPageCount() + "");
addParam(mParam);
if (isViewAttached() && isReload) {
getView().showLoadingData();
}
}
protected abstract String getUrl();//数据请求地址
protected abstract int getPageCount();//每页的数据
protected abstract void addParam(Map<String, String> map);//自动放置页码和页数,只需添加额外参数
protected int getcurrentPage(boolean isRefresh, List data) {
if (data == null || isRefresh) {
return 1;
}
return data.size() / getPageCount() + 1;
}
protected boolean hasMoreData(List returnData) {
if (returnData == null || returnData.size() < getPageCount()) { //没有更多数据
return false;
}
return true;
}
@CallSuper
@Override
public void createModel() {
model = new BaseModel();
mParam = new HashMap();
}
}
BasePresenter
public abstract class BasePresenter extends MvpBasePresenter {
}
BaseLoadingPresenter
public abstract class BaseLoadingPresenter extends BasePresenter {
}
IBaseListView
public interface IBaseListView extends ILoadingView {
void refreshComplete();
void hasMoreData(boolean hasMore, boolean isSuccess);
void refreshData();
}
IBaseView
public interface IBaseView extends IMvpBaseView {
void showLoadingDialog(boolean cancelAble);
void dismissLoadingDialog();
void showToastMsg(String msg);
}
ILoadingView
public interface ILoadingView extends IBaseView {
void showReload();
void showLoadingData();
void showEmpty(); //默认显示暂无信息
void showEmpty(String hint);
void loadingDataComplete();
}
BaseActivity
public abstract class BaseActivity
extends MvpBaseActivity
implements IBaseView {
private LoadingDialog mLoadingDialog;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AppManager.getAppManager().addActivity(this);
setContentView(layoutId());
initLayoutView(savedInstanceState);
}
protected abstract int layoutId();
protected abstract void initLayoutView(Bundle savedInstanceState);
@Override
public void showLoadingDialog(boolean cacelAble) {
if (mLoadingDialog == null) {
mLoadingDialog = new LoadingDialog();
}
mLoadingDialog.show(this, cacelAble);
}
@Override
public void dismissLoadingDialog() {
if (mLoadingDialog != null) {
mLoadingDialog.disMiss(this);
}
}
@Override
public void showToastMsg(String msg) {
ToastUtil.showToastShort(this, msg);
}
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onStop() {
super.onStop();
HttpClient.getInstance().cancelRequest(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
AppManager.getAppManager().removeActivity(this);
}
}
BaseFragment
public abstract class BaseFragment
extends MvpBaseFragment
implements IBaseView {
private static final String STATE_SAVE_IS_HIDDEN = “STATE_SAVE_IS_HIDDEN”;
private LoadingDialog mLoadingDialog;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
boolean isSupportHidden = savedInstanceState.getBoolean(STATE_SAVE_IS_HIDDEN);
FragmentTransaction ft = getFragmentManager().beginTransaction();
if (isSupportHidden) {
ft.hide(this);
} else {
ft.show(this);
}
ft.commit();
}
}
@Nullable
@Override
public final View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(getLayoutId(), container, false);
return view;
}
@SuppressWarnings("unchecked")
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initView(view);
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putBoolean(STATE_SAVE_IS_HIDDEN, isHidden());
}
@Override
public void showLoadingDialog(boolean cacelAble) {
if (mLoadingDialog == null) {
mLoadingDialog = new LoadingDialog();
}
mLoadingDialog.show((AppCompatActivity) getActivity(), cacelAble);
}
@Override
public void dismissLoadingDialog() {
if (mLoadingDialog != null) {
mLoadingDialog.disMiss(getActivity());
}
}
@Override
public void onStop() {
super.onStop();
HttpClient.getInstance().cancelRequest(this);
}
@Override
public void showToastMsg(String msg) {
ToastUtil.showToastShort(getContext(), msg);
}
public abstract int getLayoutId();
protected abstract void initView(View view);
}
ResultBean
public class ResultBean {
public int code;
public String message;
public T data;
public boolean isSuccess() {
return code == 200;
}
}