MVP框架 契约类

先创建  V层接口:

public interface Iview <T>{
  void  guanlaoin(T t);

}

创建P层接口:

public interface Ip {

}
创建契约类:
public interface Contart {
    interface MyP extends Ip{
        void  login();
    }
    interface MyV<MyP> extends Iview<MyP>{
        void UpView(User user);
    }
}
建立P层 实现:
 Contart.MyP接口 重新  :
login()方法

 

在V层实现

Contart.MyV<Contart.MyP>接口
重新
UpView和
guanlaoin方法

在v层

new P(this);

myp.login();

在P层:

myv.guanlaoin(this);

 

 

形成V层与P层的一个循环

V层通过:myp.login();先调用p层方法P层通过

myv.UpView(user);给V层传值

 

M层  定义接口回调  

public interface Im {
    void qingqiu(Shuju shuju);
    interface Shuju{
        void shuju(User user);
    };

创建M层  实现接口     进行耗时操作

 

实例:

 

 

V层

public class AFragment extends BaseFragment implements Contart.MyV<Contart.MyP>, OnBannerListener {


    private View view;
    Contart.MyP myp;
    private Banner be;
    private List<User.BodyBean.ResultBean> result;

    public AFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        view = inflater.inflate(R.layout.fragment_a, container, false);

        return view;

    }

    @Override
    public void UpView(User user) {
        ArrayList<String> list = new ArrayList<>();
        result = user.getBody().getResult();
        for (int i=0;i<result.size();i++){
           list.add(result.get(i).getBarnerPic()) ;
        }


                  be.setImageLoader(new Sum());
                  //添加资源 就是图片集合
                  be.setImages(list);
                  //最后开启
                  be.start();
                  be.setOnBannerListener(this);
    }

    @Override
    public void guanlaoin(Contart.MyP myP) {
        this.myp = myP;
    }

    private void initView(View view) {
        be = (Banner) view.findViewById(R.id.be);

    }

    @Override
    public void OnBannerClick(int position) {
        Intent intent = new Intent(getActivity(), Main2Activity.class);
        startActivity(intent);
    }

    @Override
    public void onLazyLoad() {
        new P(this);
        myp.login();
        initView(view);
    }
}

P层

public class P implements Contart.MyP{
    Contart.MyV myv;
    private final com.example.lenovo.kaoshi.model.model model;

    public P(Contart.MyV myv) {
        this.myv=myv;
        myv.guanlaoin(this);
        model = new model();

    }

    @Override
    public void login() {
        Log.e("P", "dcddddddddddd");
       model.qingqiu(new Im.Shuju() {
           @Override
           public void shuju(User user) {
            myv.UpView(user);
           }
       });
    }

}

 

M层

 

 

public class model implements Im{

    @Override
    public void qingqiu(final Shuju shuju) {

                    Retrofit build = new Retrofit.Builder().baseUrl("https://api.yunxuekeji.cn/").addConverterFactory(GsonConverterFactory.create(new Gson())).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build();

                    Tou tou = build.create(Tou.class);


                    Observable<User> newsInfo = tou.getNewsInfo();

                    newsInfo.subscribeOn(Schedulers.newThread())

                            .observeOn(AndroidSchedulers.mainThread())//最后在主线程中执行
                            .subscribe(new Subscriber<User>(){
                                @Override
                                public void onCompleted() {

                                }

                                @Override
                                public void onError(Throwable e) {
                                    Log.e("model", "shibai");

                                }

                                @Override
                                public void onNext(User user) {

                                    shuju.shuju(user);
                                }
                            });
    }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值