MVP编辑器

博客展示了MVP架构相关代码,包含MainActivity类、MyModel类、Mypresenter类、OkhttpUtile类及Contexts接口等代码片段,涉及数据处理、消息处理等操作。
									这是view层的

public class MainActivity extends AppCompatActivity implements Contexts.viewprsenter {

RecyclerView recyclerView;
MyAdapter adapter;
List<News.ResultBean.RxxpBean.CommodityListBean> list = new ArrayList<>();
//获取P层的
Contexts.PresenterFase presenterFase;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    init();
}

private void init() {
    recyclerView = findViewById(R.id.main_recycler);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    recyclerView.setLayoutManager(linearLayoutManager);
    //创建适配器
    adapter = new MyAdapter(list, this);
    recyclerView.setAdapter(adapter);
    presenterFase = new Mypresenter(this);
    presenterFase.toModle();
}

@Override
public void refreDisply(List<News.ResultBean.RxxpBean.CommodityListBean> list) {
    this.list.addAll(list);
    //刷新适配器
    adapter.notifyDataSetChanged();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    presenterFase.onDestroy();
    presenterFase = null;
}

}

													这是Model

public class MyModel implements Contexts.MymodelFase {
List<News.ResultBean.RxxpBean.CommodityListBean> list;
MyCallBack myCallBack;
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int type = msg.arg1;
switch (type){
case 1:
String json = (String) msg.obj;
Log.e(“tag”,json);
Gson gson = new Gson();
News news = gson.fromJson(json, News.class);
myCallBack.success(news);
break;

        }
    }
};
@Override
public void onRequest(String url, Map<String, String> map, int type,MyCallBack myCallBack) {
    this.myCallBack = myCallBack;
    OkhttpUtile.getinter().doGet(url, map, handler, type);
}

//创建接口
public interface MyCallBack{

    public void success(Object obj);
}

}

											这儿是p层

public class Mypresenter implements Contexts.PresenterFase {

//获取Model层的对象
Contexts.MymodelFase mymodelFase;

//获去V层的
Contexts.viewprsenter viewprsenter;

public Mypresenter(Contexts.viewprsenter viewprsenter) {
    mymodelFase = new MyModel();
    this.viewprsenter = viewprsenter;
}

@Override
public void toModle() {
    mymodelFase.onRequest("http://172.17.8.100/small/commodity/v1/commodityList", null, 1, new MyModel.MyCallBack() {
        @Override
        public void success(Object obj) {
            if (obj instanceof News){
                News news = (News) obj;
                viewprsenter.refreDisply(news.getResult().getRxxp().getCommodityList());
            }
        }
    });
}

@Override
public void onDestroy() {
    viewprsenter = null;
}

}

											这是Util

public class OkhttpUtile {
OkHttpClient okHttpClient;

public static OkhttpUtile okhttpUtile;

private OkhttpUtile(){
    okHttpClient = new OkHttpClient();
    okHttpClient.newBuilder().addInterceptor(new MyInterceptor()).build();
}

public static synchronized OkhttpUtile getinter(){
    if (okhttpUtile == null){
        okhttpUtile = new OkhttpUtile();
    }
    return okhttpUtile;
}

public void  doGet(String url , Map<String ,String>map , final Handler mh , final int type){
    if (map != null && map.size()>0){
        String str = "";
        StringBuilder builder = new StringBuilder();
        for(String key : map.keySet()){
            String pkey = key;
            String value = map.get(pkey);
            builder.append(pkey).append("=").append(value).append("&");
        }
        str = builder.toString();
        int index = str.lastIndexOf("&");
        str = str.substring(0,index);
        url = url+"?"+str;
    }
    Request request = new Request.Builder().get().url(url).build();
    Call call = okHttpClient.newCall(request);
    
    //异步请求数据
    call.enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            String json = response.body().string();
            Message message = new Message();
            message.arg1 = type;
            message.obj = json;
            mh.sendMessage(message);
        }
    });

}



//创建一个接口类
public class MyInterceptor implements Interceptor{

    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        Response response = chain.proceed(request);
        return response;
    }
}

}

											//这是contentx

public interface Contexts {

//创建view层的接口
public interface viewprsenter{
    public void refreDisply(List<News.ResultBean.RxxpBean.CommodityListBean> list);
}

public interface PresenterFase{
    //去Model请求数据的方
    public void toModle();
    public void onDestroy();
}

//创建M层的方法
public interface MymodelFase{
    public void onRequest(String url , Map<String , String>map , int type, MyModel.MyCallBack myCallBack);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值