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);
    }
發佈了99 篇原創文章 · 獲贊 15 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章