效果图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190407081931734.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDI5NzM2OA==,size_16,color_FFFFFF,t_70)
vew
package com.bawei.mvp.view;
/**
* 作者:$yangxiangrong
* <p>
* 2019/4/1 18:47
*/
public interface MainView {
void sueccss(int type,String data);
void fail(int type,String error);
}
model
package com.bawei.mvp.model;
/**
* 作者:$yangxiangrong
* <p>
* 2019/4/1 18:50
*/
public interface MainModel {
interface CallBackLister{
void sueccss(int type,String data);
void fail(int type,String error);
}
void doBaner(int type,String url,CallBackLister callBackLister);
void doData(int type,String url,CallBackLister callBackLister);
}
package com.bawei.mvp.model;
import com.bawei.mvp.utils.OkHttpUtils;
/**
* 作者:$yangxiangrong
* <p>
* 2019/4/1 18:52
*/
public class MainModelIml implements MainModel {
@Override
public void doBaner(final int type, String url, final CallBackLister callBackLister) {
new OkHttpUtils().get(url).result(new OkHttpUtils.HttpListener() {
@Override
public void sueccss(String data) {
callBackLister.sueccss(type,data);
}
@Override
public void fail(String error) {
callBackLister.fail(type,error);
}
});
}
@Override
public void doData(final int type, String url, final CallBackLister callBackLister) {
new OkHttpUtils().get(url).result(new OkHttpUtils.HttpListener() {
@Override
public void sueccss(String data) {
callBackLister.sueccss(type,data);
}
@Override
public void fail(String error) {
callBackLister.fail(type,error);
}
});
}
}
presenter
package com.bawei.mvp.presenter;
import com.bawei.mvp.model.MainModel;
/**
* 作者:$yangxiangrong
* <p>
* 2019/4/1 18:53
*/
public interface MainPresenter {
void doBaner(int type,String url);
void doData(int type,String url);
}
package com.bawei.mvp.presenter;
import com.bawei.mvp.model.MainModel;
import com.bawei.mvp.view.MainView;
/**
* 作者:$yangxiangrong
* <p>
* 2019/4/1 18:54
*/
public class MainPresenterIml implements MainPresenter, MainModel.CallBackLister {
private MainModel mainModel;
private MainView mainView;
public MainPresenterIml(MainModel mainModel, MainView mainView){
this.mainModel=mainModel;
this.mainView=mainView;
}
@Override
public void doBaner(int type, String url) {
mainModel.doBaner(type,url,this);
}
@Override
public void doData(int type, String url) {
mainModel.doData(type,url,this);
}
@Override
public void sueccss(int type, String data) {
mainView.sueccss(type,data);
}
@Override
public void fail(int type, String error) {
mainView.fail(type,error);
}
public void destroy(){
if (mainView!=null){
mainView=null;
}
if (mainModel!=null){
mainModel=null;
}
System.gc();
}
}
utils
package com.bawei.mvp.utils;
import android.os.Handler;
import android.os.Message;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
/**
* 作者:$yangxiangrong
* <p>
* 2019/4/1 10:04
*/
public class OkHttpUtils {
int HTTP_SUECCSS=200;
int HTTP_FAIL=201;
private HttpListener httpListener;
public OkHttpUtils get(String url){
doHttp(url,0,null);
return this;
}
public OkHttpUtils post(String url,int type, FormBody.Builder bodyBuilder){
doHttp(url,1,bodyBuilder);
return this;
}
private void doHttp(String url,int type,FormBody.Builder bodyBuilder) {
//拦截器
OkHttpClient client=new OkHttpClient.Builder().addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request=chain.request();
return chain.proceed(request);
}
}).build();
Request.Builder builder=new Request.Builder();
if (type==0){
builder.get();
}else {
builder.post(bodyBuilder.build());
}
builder.url(url);
Request request=builder.build();
final Message message=new Message();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
message.obj=e.getMessage();
message.what=HTTP_FAIL;
handler.sendMessage(message);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
message.obj=response.body().string();
message.what=HTTP_SUECCSS;
handler.sendMessage(message);
}
});
}
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what==HTTP_SUECCSS){
String data= (String) msg.obj;
httpListener.sueccss(data);
}else {
String error= (String) msg.obj;
httpListener.fail(error);
}
}
};
//接口回调的方法
public void result(HttpListener httpListener){
this.httpListener=httpListener;
}
//接口
public interface HttpListener{
void sueccss(String data);
void fail(String error);
}
}
bean
package com.bawei.mvp.bean;
import com.stx.xhb.xbanner.entity.SimpleBannerInfo;
import java.util.List;
/**
* 作者:$yangxiangrong
* <p>
* 2019/4/1 18:54
*/
public class BannerBean implements BaseBean{
/**
* result : [{"imageUrl":"http://172.17.8.100/images/small/banner/cj.png","jumpUrl":"http://172.17.8.100/htm/lottery/index.html","rank":5,"title":"抽奖"},{"imageUrl":"http://172.17.8.100/images/small/banner/hzp.png","jumpUrl":"wd://commodity_list?arg=1001007005","rank":5,"title":"美妆工具"},{"imageUrl":"http://172.17.8.100/images/small/banner/lyq.png","jumpUrl":"wd://commodity_info?arg=83","rank":5,"title":"连衣裙"},{"imageUrl":"http://172.17.8.100/images/small/banner/px.png","jumpUrl":"wd://commodity_info?arg=165","rank":5,"title":"跑鞋"},{"imageUrl":"http://172.17.8.100/images/small/banner/wy.png","jumpUrl":"wd://commodity_list?arg=1001002004","rank":5,"title":"卫衣"}]
* message : 查询成功
* status : 0000
*/
private String message;
private String status;
private List<ResultBean> result;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public List<ResultBean> getResult() {
return result;
}
public void setResult(List<ResultBean> result) {
this.result = result;
}
public static class ResultBean extends SimpleBannerInfo {
/**
* imageUrl : http://172.17.8.100/images/small/banner/cj.png
* jumpUrl : http://172.17.8.100/htm/lottery/index.html
* rank : 5
* title : 抽奖
*/
private String imageUrl;
private String jumpUrl;
private int rank;
private String title;
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
public String getJumpUrl() {
return jumpUrl;
}
public void setJumpUrl(String jumpUrl) {
this.jumpUrl = jumpUrl;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Override
public Object getXBannerUrl() {
return null;
}
}
}
package com.bawei.mvp.bean;
/**
* 作者:$yangxiangrong
* <p>
* 2019/4/1 18:54
*/
public interface BaseBean {
}
package com.bawei.mvp.bean;
import java.util.List;
/**
* 作者:$yangxiangrong
* <p>
* 2019/4/1 18:54
*/
public class HomeListBean {
/**
* result : {"rxxp":{"commodityList":[{"commodityId":5,"commodityName":"双头两用修容笔","masterPic":"http://17