Contract
public interface IContract {
//V层
public interface IView{
public void showData(String responseData);
}
//P层
public interface IPrenster<IView>{
//绑定
public void attachView(IContract.IView iView);
//解绑
public void deatchView(IContract.IView iView);
//数据请求
public void requestData();
}
//M层
public interface IModel{
//请求网络数据
public void requestInternet(CallBack callback);
//接口回调
public interface CallBack{
public void responseData( String responseData);
}
}
}
presenter
package bawei.wss.com.zhoukao_01lainxi.di.prensenter;
import java.lang.ref.SoftReference;
import bawei.wss.com.zhoukao_01lainxi.R;
import bawei.wss.com.zhoukao_01lainxi.di.contract.IContract;
import bawei.wss.com.zhoukao_01lainxi.di.model.Model;
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);
}
});
}
}
model
package bawei.wss.com.zhoukao_01lainxi.di.model;
import java.io.IOException;
import bawei.wss.com.zhoukao_01lainxi.data.okhhttpuits;
import bawei.wss.com.zhoukao_01lainxi.di.contract.IContract;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class Model implements IContract.IModel {
@Override
public void requestInternet(CallBack callback) {
requestUrlString(callback);
}
private void requestUrlString(final CallBack callback) {
//请求体
FormBody formBody = new FormBody.Builder().build();
//网络接口
String urlString="http://api.tianapi.com/meinv/?key=3304a8bc9414f97e30928b80163cf098&num=10";
//封装类调用
okhhttpuits.uit().post(formBody,urlString, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
callback.responseData(e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
callback.responseData(response.body().string());
}
});
}
/*//异步解析
private void requestUrlString(final CallBack callback) {
//创建OKHttp3
OkHttpClient client = new OkHttpClient.Builder().build();
//创建请求体
FormBody build = new FormBody.Builder().build();
//创建request
Request request = new Request.Builder()
.method("POST",build)
.url(urlString)
.build();
//提交接口
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
String responseData = e.getMessage();
callback.responseData(responseData);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String responseData = response.body().string();
callback.responseData(responseData);
}
});
}*/
}