九宫格+列表展示(MVP)

//Contract

package com.bwei.zonghe_1.di.conter;

import com.bwei.zonghe_1.data.bean.WangBean;
import com.bwei.zonghe_1.data.bean.ZongBean;

/**
 * Created by 杨柳 on 2018/9/21.
 */

public interface HomeContractor {

    //一.1
    public interface WangIView{
        //一.2.
        void wangData(WangBean wangBean);
        //一.3.
        void onError(Throwable throwable);
        //一.4.
        void zongData(ZongBean zongBean);
    }

    //一.5
    public interface WangIPresenter<WangIView>{
        //一.6
        void attachView(WangIView wangIView);
        //一.7
        void detachView(WangIView wangIView);
        //一.8
       void wangRequestData();
       //一.9
        void zongRequestData();
    }

    //一.9
    public interface WangIModel{
        public interface WangListener{
            //一.10
            void wangCallBack(WangBean wangBean);
            //一.11
            void onError(Throwable throwable);
        }
        //一.12
        public interface ZongListener{
            //一.13
            void zongCallBack(ZongBean zongBean);
        }
        //一.14
        void wangResponseData(WangListener wangListener);
        //一.15(去P层)
        void zongResponseData(ZongListener zongListener);
    }
}


//Model

package com.bwei.zonghe_1.di.model;

import android.annotation.SuppressLint;

import com.bwei.zonghe_1.data.bean.WangBean;
import com.bwei.zonghe_1.data.bean.ZongBean;
import com.bwei.zonghe_1.data.service.Contast;
import com.bwei.zonghe_1.data.utils.RetrofitUtil;
import com.bwei.zonghe_1.di.conter.HomeContractor;

import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;

/**
 * Created by 杨柳 on 2018/9/21.
 */

public class WangModel implements HomeContractor.WangIModel {
    //三.1
    @SuppressLint("CheckResult")
    @Override
    public void wangResponseData(final WangListener wangListener) {
        //三.2
        Observable<WangBean> observable = RetrofitUtil.getInstance().getapiService(Contast.WANG_BEAN).getWang("");
        observable.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<WangBean>() {
                    @Override
                    public void accept(WangBean wangBean) throws Exception {
                        wangListener.wangCallBack(wangBean);
                    }
                }, new Consumer<Throwable>() {
                    @Override
                    public void accept(Throwable throwable) throws Exception {
                        wangListener.onError(throwable);
                    }
                });
    }

    @Override
    public void zongResponseData(final ZongListener zongListener) {
        //二.3
        Observable<ZongBean> observable = RetrofitUtil.getInstance().getapiService(Contast.ZONG_BASE).getZong("");
        observable.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<ZongBean>() {
                    @Override
                    public void accept(ZongBean zongBean) throws Exception {
                        zongListener.zongCallBack(zongBean);
                    }
                });
    }
}

//Presenter

package com.bwei.zonghe_1.di.presenter;

import android.content.AbstractThreadedSyncAdapter;

import com.bwei.zonghe_1.data.bean.WangBean;
import com.bwei.zonghe_1.data.bean.ZongBean;
import com.bwei.zonghe_1.di.conter.HomeContractor;
import com.bwei.zonghe_1.di.model.WangModel;

import java.lang.ref.WeakReference;

/**
 * Created by 杨柳 on 2018/9/21.
 */

//二.1(从一.15过来)(去建M层)
public class WangPresenter implements HomeContractor.WangIPresenter<HomeContractor.WangIView> {
    //二.2
    private WangModel wangModel;
    //二.3
    HomeContractor.WangIView wangIView;
    private WeakReference<HomeContractor.WangIView> wangIViewWeakReference;
    private WeakReference<WangModel> wangModelWeakReference;


    @Override
    public void attachView(HomeContractor.WangIView wangIView) {
        //二.4
        this.wangIView = wangIView;
        //二.5
        wangModel = new WangModel();
        //二.6
        wangIViewWeakReference = new WeakReference<>(wangIView);
        //二.7
        wangModelWeakReference = new WeakReference<>(wangModel);
    }

    @Override
    public void detachView(HomeContractor.WangIView wangIView) {
        //二.8
        wangIViewWeakReference.clear();
        //二.9
        wangModelWeakReference.clear();
    }

    @Override
    public void wangRequestData() {
        //二.10
        wangModel.wangResponseData(new HomeContractor.WangIModel.WangListener() {
            @Override
            public void wangCallBack(WangBean wangBean) {
                //二.11
                wangIView.wangData(wangBean);
            }

            @Override
            public void onError(Throwable throwable) {
                //二.12
                wangIView.onError(throwable);
            }
        });
    }

    @Override
    public void zongRequestData() {
        // 二.13
        wangModel.zongResponseData(new HomeContractor.WangIModel.ZongListener() {
            @Override
            public void zongCallBack(ZongBean zongBean) {
                // 二.14(去M层)
                wangIView.zongData(zongBean);
            }
        });
    }

}

猜你喜欢

转载自blog.csdn.net/Yang_Liu_1/article/details/82809816