MVP实现FlyBanner轮播

第一步:写入FlyBanner布局

 <com.recker.flybanner.FlyBanner
       android:id="@+id/FlyBanner"
       android:layout_width="300dp"
       android:layout_height="169dp"
       android:layout_gravity="center"
       >
   </com.recker.flybanner.FlyBanner>

第二步:mvp的契约类

public interface BannerContract {
    /**
     * p
     */
    public abstract class BannerPresenter{
        public abstract void Banner(HashMap<String,String> params);
    }
    /**
     * m
     */
    public interface BnannerModel{
        void Success(HashMap<String,String> params, BannerModel.ModelCallBack modelCallBack);
    }
    /**
     * v
     */
    public interface BannerView{
        void Success(List<BannerBean.ResultBean> resultBean);
        void FailUre(String msg);
    }
}

第三步:model层

@Override
    public void Success(HashMap<String, String> params, final ModelCallBack modelCallBack) {
        OkHttpUtils.getmInstance().Get(ApiUrl.GOOD_BANNER, params, new OkhttpCallBack() {
            @Override
            public void FailUre(String msg) {
                if(modelCallBack != null){
                    modelCallBack.FailUre(msg);
                }
            }

            @Override
            public void Success(String result) {
                if(modelCallBack != null){
                    modelCallBack.Success(result);
                }
            }
        });
    }

    public interface ModelCallBack{
       void Success(String result);
       void FailUre(String msg);
   }

第四步:p层

private BannerModel bannerModel;
    private BannerContract.BannerView bannerView;

    public BannerPresenter(BannerContract.BannerView bannerView) {
        this.bannerModel = new BannerModel();
        this.bannerView = bannerView;
    }

    @Override
    public void Banner(HashMap<String, String> params) {
        bannerModel.Success(params, new BannerModel.ModelCallBack() {
            @Override
            public void Success(String result) {
                    BannerBean bannerBean = new Gson().fromJson(result, BannerBean.class);
                    List<BannerBean.ResultBean> resultBean = bannerBean.getResult();
                    bannerView.Success(resultBean);
            }

            @Override
            public void FailUre(String msg) {
                if(bannerModel != null){
                    bannerView.FailUre(msg);
                }
            }
        });
    }

第五步:activity的view层

		//资源id
		FlyBanner = view.findViewById(R.id.FlyBanner);
        bannerPresenter = new BannerPresenter(this);//轮播图
       //轮播图
        if(bannerPresenter != null){
            bannerPresenter.Banner(new HashMap<String, String>());
        }
     /**
     * 轮播图执行成功
     * @param resultBean
     */
    @Override
    public void Success(List<BannerBean.ResultBean> resultBean) {
        icon = new ArrayList<>();
        for(int i = 0;i < resultBean.size();i++){
            icon.add(resultBean.get(i).getImageUrl());
        }
        FlyBanner.setImagesUrl(icon);
    }

猜你喜欢

转载自blog.csdn.net/weixin_43808025/article/details/86546757