代码拉取完成,页面将自动刷新
build.gradle中加入如下代码
repositories {
//略
//指定路径
maven { url "https://gitee.com/abe_peng/MVPFrame/raw/master" }
}
compile('com.abe.mvp:core:1.4')
1.协议
public class ExContract {
public interface ExView extends BaseView {
void onReqEx(boolean isSuccess);
}
public interface Ex2View extends BaseView {
void onReqEx2(boolean isSuccess);
}
public interface ExPresenter {
void reqEx();
}
public interface Ex2Presenter {
void reqEx2();
}
public interface Model {
void reqEx(OnResultListener<Boolean> listener);
void reqEx2(OnResultListener<Boolean> listener);
}
}
2.Model
public class ExModel implements ExContract.Model {
@Override
public void reqEx(OnResultListener<Boolean> listener) {
listener.onStart();
listener.onSuccess(true);
listener.onEnd();
}
@Override
public void reqEx2(OnResultListener<Boolean> listener) {
listener.onStart();
listener.onSuccess(true);
listener.onEnd();
}
}
3.presenter-view 通用用法
public class ExPresenter extends BasePresenter<ExContract.ExView, ExModel> implements ExContract.ExPresenter {
@Override
public void reqEx() {
getModel().reqEx(new OnResultListener<Boolean>() {
@Override
public void onStart() {
}
@Override
public void onEnd() {
ExPresenter.this.onEnd(ExPresenter.class.getSimpleName());
}
@Override
public void onSuccess(Boolean data) {
if (ExPresenter.this.onSuccess(data)) {
getView().onReqEx(data);
}
}
@Override
public void onFailure(String message) {
ExPresenter.this.onFailure(ExPresenter.class.getSimpleName());
}
});
}
}
public class ExActivity extends Activity implements ExContract.ExView {
TextView textView;
ExPresenter presenter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ex);
presenter = new ExPresenter();
presenter.attachView(this);
textView = findViewById(R.id.item_text);
findViewById(R.id.item_btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
presenter.reqEx();
}
});
}
@Override
public void onDestroy() {
super.onDestroy();
if (presenter != null) {
presenter.detachView();
}
}
@Override
public void onReqEx(boolean isSuccess) {
if (isSuccess) {
runOnUiThread(new Runnable() {
@Override
public void run() {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd HH:mm:ss.zzz", Locale.CHINA);
String string = "通过MVP改变:" + format.format(new Date());
textView.setText(string);
}
});
}
}
@Override
public void onFinish(Object type) {
}
@Override
public void onFailure(Object type) {
}
}
4.PresenterHelper 通过Helper管理Presenter生命周期
public class Ex2Presenter extends BasePresenter<ExContract.Ex2View, ExModel> implements ExContract.Ex2Presenter {
@Override
public void reqEx2() {
getModel().reqEx2(new OnResultListener<Boolean>() {
@Override
public void onStart() {
}
@Override
public void onEnd() {
Ex2Presenter.this.onEnd(Ex2Presenter.class.getSimpleName());
}
@Override
public void onSuccess(Boolean data) {
if (Ex2Presenter.this.onSuccess(data)) {
getView().onReqEx2(data);
}
}
@Override
public void onFailure(String message) {
Ex2Presenter.this.onFailure(Ex2Presenter.class.getSimpleName());
}
});
}
}
public class Ex2Activity extends Activity implements ExContract.ExView, ExContract.Ex2View {
TextView textView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ex2);
textView = findViewById(R.id.item_text);
findViewById(R.id.item_btn1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
((ExPresenter) getPresenter(ExPresenter.class)).reqEx();
}
});
findViewById(R.id.item_btn2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
((Ex2Presenter) getPresenter(Ex2Presenter.class)).reqEx2();
}
});
}
private BasePresenter getPresenter(Class<?> presenterClass) {
return (BasePresenter) PresenterHelper.getInstance().getPresenter(presenterClass, Ex2Activity.this);
}
@Override
public void onDestroy() {
super.onDestroy();
PresenterHelper.getInstance().destroy(Ex2Activity.this);
}
@Override
public void onReqEx(boolean isSuccess) {
if (isSuccess) {
runOnUiThread(new Runnable() {
@Override
public void run() {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd HH:mm:ss.zzz", Locale.CHINA);
String string = "通过MVP改变:" + format.format(new Date());
textView.setText(string);
}
});
}
}
@Override
public void onReqEx2(boolean isSuccess) {
if (isSuccess) {
runOnUiThread(new Runnable() {
@Override
public void run() {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd HH:mm:ss.zzz", Locale.CHINA);
String string = "通过MVP-2改变:" + format.format(new Date());
textView.setText(string);
}
});
}
}
@Override
public void onFinish(Object type) {
}
@Override
public void onFailure(Object type) {
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。