契约类
package di;
public interface IContract {
public interface Imodl{
public interface OnCallBack{
void ShowData(String showmsg);
}
void requestData(String tel, String pass, OnCallBack onCallBack);
}
public interface Iview{
void shouData(String showmsg);
}
public interface Ipresenter<Iview>{
void attchview(Iview iview);
void detachview(Iview iview);
void requestinfo(String tel, String pass);
}
}
M层
package di;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.Response;
import util.HttpUtil;
public class ImodelImpl implements IContract.Imodl{
private String url="http://www.zhaoapi.cn/user/reg ";
@Override
public void requestData(String tel, String pass, final OnCallBack onCallBack) {
if (tel.equals("")||pass.equals("")){
onCallBack.ShowData("用户名密码不能为空");
}else {
FormBody formBody=new FormBody.Builder()
.add("mobile",tel)
.add("password",pass)
.build();
HttpUtil.getinstance().postOK(url, formBody, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
String s = e.getMessage().toString();
onCallBack.ShowData(s);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String msgs = response.body().string();
onCallBack.ShowData(msgs);
}
});
}}
}
P层
package di;
import java.lang.ref.WeakReference;
public class IpresenterImpl implements IContract.Ipresenter<IContract.Iview>{
private IContract.Iview iview;
private IContract.Imodl imodl;
WeakReference<IContract.Iview> viewReferenc;
WeakReference<IContract.Imodl> modelReferenc;
@Override
public void attchview(IContract.Iview iview) {
this.iview=iview;
imodl=new ImodelImpl();
//软引用包裹
viewReferenc=new WeakReference<>(iview);
modelReferenc=new WeakReference<>(imodl);
}
@Override
public void detachview(IContract.Iview iview) {
viewReferenc.clear();
modelReferenc.clear();
}
@Override
public void requestinfo(String tel, String pass) {
imodl.requestData(tel,pass,new IContract.Imodl.OnCallBack() {
@Override
public void ShowData(String showmsg) {
iview.shouData(showmsg);
}
});
}
}
V层
package com.baway.erzhoulx;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import di.IContract;
import di.IpresenterImpl;
public class MainActivity extends AppCompatActivity implements IContract.Iview{
@BindView(R.id.ed1)
EditText ed1;
@BindView(R.id.ed2)
EditText ed2;
@BindView(R.id.bu)
Button bu;
private IContract.Ipresenter<IContract.Iview> ipresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
ipresenter=new IpresenterImpl();
ipresenter.attchview(this);
}
@OnClick(R.id.bu)
public void onViewClicked() {
String tel = ed1.getText().toString();
String pass = ed2.getText().toString();
ipresenter.requestinfo(tel,pass);
}
@Override
public void shouData(final String showmsg) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,showmsg,Toast.LENGTH_SHORT).show();
Intent intent=new Intent(MainActivity.this,Login.class);
startActivity(intent);
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
ipresenter.detachview(this);
}
}