注:此MVP为注册登录 有其余需要请改值
1.契约类(接口绑定model view prensenter)
public interface ILogcontract {
//V层
public interface ILogView{
//回显数据
public void showdata(String message);
}
//P层
public interface ILogPresenter<IRegView>{
//绑定
public void attachview(IRegView iRegView);
//解绑
public void detachview(IRegView iRegView);
//数据获取
public void requestdata(String name, String pwd);
}
//M层
public interface ILogMode{
//请求数据
public void contel(String name, String pwd, Callback callback);
//接口回调
public interface Callback {
public void responsetdata(String message);
}
}
}
2.Model层
public class Regmodel implements IRegcontract.IRegModel {
@Override
public void contel(String name, String pwd, final Callback callback) {
//接口
String jk=MyInterface.Zjq_Reg+"?phone="+name+"&pwd="+pwd;
//表单
FormBody formBody=new FormBody.Builder().build();
//请求OKhttp方法
NetOkhttp okhttp=NetOkhttp.getInstance();
//OKhttp中post的方法
okhttp.post(formBody, jk, new okhttp3.Callback() {
@Override
public void onFailure(Call call, IOException e) {
String message = e.getMessage();
callback.responsetdata(message);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String string = response.body().string();
callback.responsetdata(string);
}
});
}
}
3.View层
ILogcontract.ILogView {
@BindView(R.id.dl_yhm)
EditText dlYhm;
@BindView(R.id.dl_mima)
EditText dlMima;
@BindView(R.id.dl_btn)
Button dlBtn;
private LogPresenter presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_loginn);
ButterKnife.bind(this);
//找id,实例化P层
presenter = new LogPresenter();
//绑定
presenter.attachview(this);
}
@OnClick(R.id.dl_btn)
public void onViewClicked() {
//点击事件,如果没有点击,切记要调用
presenter.requestdata(dlYhm.getText().toString().trim(),dlMima.getText().toString().trim());
}
@Override
public void showdata(final String message) {
//开启子线程
runOnUiThread(new Runnable() {
@Override
public void run() {
//解析加跳转
Gson gson=new Gson();
JsonBeann beann = gson.fromJson(message, JsonBeann.class);
int status = beann.getStatus();
if (status==0000){
Intent in=new Intent(LoginActivity.this,ShowActivity.class);
startActivity(in);
}
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
//解绑
presenter.detachview(this);
}
}
4.Prensenter层
public class Prensenter implements IContract.IPrenster<IContract.IView> {
IContract.IView iView;
private SoftReference<IContract.IView> reference;
private Model model;
@Override
public void attachView(IContract.IView iView) {
this.iView=iView;
//软引用包裹
reference = new SoftReference<>(iView);
//创建M层
model = new Model();
}
@Override
public void deatchView(IContract.IView iView) {
reference.clear();
}
@Override
public void requestData() {
model.requestInternet(new IContract.IModel.CallBack() {
@Override
public void responseData(String responseData) {
iView.showData(responseData);
}
});
}