MVP 框架

一.View
1.写一个 iMyView 接口

public interface IMyView {
//    展示九宫格
    void show_jiugongge(List<Jiugongge_Bean.DataBean> jiugongge_listview);}

2.在MainActivity 实现 implements IMyView
注意:后期一定要连接 Presenter

 Presenter presenter = new Presenter();
        presenter.getList(new Model(presenter), this);

3.(1)建立一个bean
(2)建立一个 网络 接口 类 HttpConfig

   public static String base_url = "https://www.zhaoapi.cn/";

    //首页九宫格
    public static String shouye_JiuGongGe = "product/getCatagory";

(3)新建一个 RetrofitUtil 类

public class RetrofitUtil {
//    单例模式
    private static RetrofitUtil retrofitUtil;
    private final Retrofit retrofit;

    public static RetrofitUtil getInstance(){
        if (retrofitUtil == null){
            retrofitUtil = new RetrofitUtil();
        }
        return retrofitUtil;
    }
//        初始化 retorfit
    public RetrofitUtil(){
        retrofit = new Retrofit.Builder()
                .baseUrl(HttpConfig.base_url)
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create(new Gson()))
                .build();
    }
    //指定服务
    public <T> T createRequest(Class<T> clz) {
        T t = retrofit.create(clz);
        return t;
    }

}

二.mode
1. 写一个 MyService 接口

public interface MyService {
    //    九宫格
    @HTTP(method = "GET", path = "product/getCatagory")
    Observable<Jiugongge_Bean> getJiuGongGe(@QueryMap Map<String, String> jiugongge_map);}

2.写一个 IModel 接口

public interface IModel {
    //    九宫格
    void getJiuGongGe(Map<String, String> jiugongge_map);
}
  1. 写一个Model 实现 IModel 接口
public class Model implements IModel {
//获取p层数据
//    不要忘记下面  完成后  iPresenter.getListData(jiugongge_bean.getData()); 这一行代码
    private final IPresenter iPresenter;

    public Model(IPresenter iPresenter) {
        this.iPresenter = iPresenter;
    }
    //九宫格
    @Override
    public void getJiuGongGe(Map<String, String> jiugongge_map) {
        RetrofitUtil retrofitUtil = RetrofitUtil.getInstance();
        MyService myService = retrofitUtil.createRequest(MyService.class);
        Observable<Jiugongge_Bean> jiuGongGe = myService.getJiuGongGe(jiugongge_map);

        jiuGongGe.subscribeOn(Schedulers.newThread())
                 .observeOn(AndroidSchedulers.mainThread())//  observeOn  被观察者
                .subscribe(new Observer<Jiugongge_Bean>() {// subscribe  订阅   Observer观察者
                    @Override
                    public void onCompleted() {
                        Log.d("BookModel", "九宫格---完成----------");
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.d("BookModel", "九宫格---失败----------");

                    }

                    @Override
                    public void onNext(Jiugongge_Bean jiugongge_bean) {
                        Log.d("BookModel", "九宫格---完成----------");

//                        一定要连接
                        iPresenter.getListData(jiugongge_bean.getData());
                    }
                });
    }
}

三. presenter
1.写一个 IPresenter 接口

public interface IPresenter {

//    进行IModel  和   IMyView 连接
    void getList(IModel iModel, IMyView iMyView);

    //    集合从新获取  然后放进  Model
    void getListData(List<Jiugongge_Bean.DataBean> jiugongge_listview);
}

2.写一个 Presenter 类 进行实现 刚才的 IPresenter 接口

public class Presenter implements IPresenter {
    private IMyView iMyView;
    private FenLei_IMyView fenLei_iMyView;

    @Override
    public void getList(IModel iModel, IMyView iMyView) {
        this.iMyView=iMyView;
        Map<String, String> map = new HashMap<>();
        iModel.getJiuGongGe(map);
    }
//九宫格
    @Override
    public void getListData(List<Jiugongge_Bean.DataBean> jiugongge_listview) {
        Log.d("aaa", "---p层展示九宫格------------------"+jiugongge_listview);
        //        添加参数
//        map.put("uid","71");
        iMyView.show_jiugongge(jiugongge_listview);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值