实现步骤:
1. 实现分包功能
2.实现Bean类
3.在MVP包下的 model包下,创建RegModel类(用于联网请求数据)
4.在MVP包下的 View包下,创建LoginView类
5.在MVP包下的 View包下 创建activity包,里面书写RegActivity
6.在MVP包下创建presenter包,创建RegPresenter类
7.创建包base,里面分为三个类,分别是BaseActivity,BasePresenter,IView
//需要添加的依赖
1.OkHttp的 2.gson解析的 3.友盟
implementation 'com.squareup.okhttp3:okhttp:3.9.0' implementation 'com.google.code.gson:gson:2.8.5' implementation files('libs/umeng-common-1.5.3.jar') 1.在MVP包下的 model包下,创建RegModel类(用于联网请求数据)
public class RegModel { //进行联网请求 public void getDataReg(String mobile,String password,final onCallBackListener onCallBackListener){ String url= HttpConfig.URL_REG; Map<String,String> map=new HashMap<>(); map.put("mobile",mobile); map.put("password",password); OkhttpUtils.getInstance().doPost(url, map, new OkhttpUtils.onCallBack() { @Override public void onFaild(Exception e) { } @Override public void onResponse(String json) { //gson解析 Gson gson = new Gson(); LoginBean loginBean = gson.fromJson(json, LoginBean.class); String msg = loginBean.getMsg(); String code = loginBean.getCode(); if("0".equalsIgnoreCase(code)){ if(onCallBackListener!=null){ onCallBackListener.onSuccess(loginBean); } }else{ if(onCallBackListener!=null){ onCallBackListener.onFaild(msg); } } } }); } //接口回调 public interface onCallBackListener{ void onSuccess(LoginBean loginBean); void onFaild(String error); } }2.在MVP包下的 View包下,创建LoginView类
public interface LoginView extends IView { void onSuccess(LoginBean loginBean); void onFaild(String error); }
3.在MVP包下的 View包下 创建activity包,里面书写RegActivity
public class RegActivity extends BaseActivity<RegPresenter> implements View.OnClickListener,LoginView { private EditText password; private EditText mobile; private Button btn_reg; @Override protected void initData() { } @Override protected RegPresenter provides() { return new RegPresenter((LoginView) this) ; } @Override protected void initListener() { btn_reg.setOnClickListener(this); } @Override protected void initView() { mobile = findViewById(R.id.reg_mobile); password = findViewById(R.id.reg_password); btn_reg = findViewById(R.id.btn_reg); } @Override protected int provideId() { return R.layout.activity_reg; } @Override public void onClick(View v) { //获取输入框内容 String m = mobile.getText().toString(); String p = password.getText().toString(); presenter.reg(m,p); } @Override public void onSuccess(LoginBean loginBean) { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(RegActivity.this,"注册成功",Toast.LENGTH_SHORT).show(); } }); } @Override public void onFaild(final String error) { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(RegActivity.this,"注册失败"+error,Toast.LENGTH_SHORT).show(); } }); } }
4.在MVP包下创建presenter包,创建RegPresenter类
public class RegPresenter extends BasePresenter<LoginView>{
private RegModel regModel;
public RegPresenter(LoginView view) {
super(view);
}
@Override
protected void initModel() {
regModel = new RegModel();
}
public void reg(String mobile,String password){
regModel.getDataReg(mobile, password, new RegModel.onCallBackListener() {
@Override
public void onSuccess(LoginBean loginBean) {
if(view!=null){
view.onSuccess(loginBean);
}
}
@Override
public void onFaild(String error) {
if(view!=null){
view.onFaild(error);
}
}
});
}
}
5.在Base里面创建IView
public interface IView {
}
6.在Base里面创建BasePresenter
public abstract class BasePresenter <V extends IView>{ protected V view; public BasePresenter(V view) { this.view = view; initModel(); } protected abstract void initModel(); //解决内存泄漏 void onDestory(){ view=null; } }
//在Base里面创建BaseActivity
public abstract class BaseActivity <P extends BasePresenter> extends AppCompatActivity{ protected P presenter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(provideId()); initView(); initListener(); //提供presenter presenter=provides(); initData(); } protected abstract void initData(); protected abstract P provides(); protected abstract void initListener(); protected abstract void initView(); protected abstract int provideId(); //解决内存泄漏 @Override protected void onDestroy() { super.onDestroy(); presenter.onDestory(); } }