MVP框架使用

使用MVP框架加载普通数据在这里插入图片描述

API

public interface Api {

    @GET("cf/dish_list.php")
    Observable<FoodEntity> getFoodEntity(@Query("stage_id") int stage_id,@Query("limit") int limit,@Query("page") int page);

}

contract

public interface FoodContract {
    interface FoodView extends IView {
        void initAdapter(List<FoodEntity.DataBean> foodEntity);
        int getStage_id();
        int getLimit();
        int getPage();
    }
    interface FoodModel extends IModel {
        void requestFoodList(int stage_id, int limit, int page, Observer<FoodEntity> observer);
    }
}

Model

public class FoodModel extends BaseModel implements FoodContract.FoodModel {
    @Override
    public void requestFoodList(int stage_id, int limit, int page, Observer<FoodEntity> observer) {
        NetWorkManager.getNetWorkManager().getRetrofit()
                .create(Api.class)
                .getFoodEntity(stage_id, limit, page)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(observer);
    }
}

Presenter

public class FoodPresenter extends BasePresenter<FoodContract.FoodModel,FoodContract.FoodView> {

    public FoodPresenter(FoodContract.FoodModel mModel, FoodContract.FoodView mView) {
        super(mModel, mView);
    }

    public void getFoodList(){
        mModel.requestFoodList(mView.getStage_id(), mView.getLimit(), mView.getPage(), new Observer<FoodEntity>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(FoodEntity foodEntities) {
                List<FoodEntity.DataBean> data = foodEntities.getData();
                mView.initAdapter(data);
            }

            @Override
            public void onError(Throwable e) {
                Log.i("xiaoming", "onError: "+ e.getMessage());
            }

            @Override
            public void onComplete() {

            }
        });
    }

}

在activity和fragment中实现contract的view接口的方法
使用P层对象调用P层的方法获取数据

public class Fragment1 extends BaseFragment<FoodPresenter> implements FoodContract.FoodView {
    private RecyclerView frgRv;

    private FoodAdapter foodAdapter;

    @Override
    public int bandLayout() {
        return R.layout.fragment_fragment1;
    }

    @Override
    public void initView() {
        frgRv = (RecyclerView) findViewById(R.id.frg_rv);

        frgRv.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));

    }

    @Override
    public void initData() {
        mPersenter = new FoodPresenter(new FoodModel(),this);
        mPersenter.getFoodList();
    }

    @Override
    public void initAdapter(List<FoodEntity.DataBean> foodEntity) {
        if (foodAdapter == null) {
            foodAdapter = new FoodAdapter(foodEntity);
            frgRv.setAdapter(foodAdapter);
        } else {
            foodAdapter.getData().addAll(foodEntity);
            foodAdapter.notifyDataSetChanged();
        }
    }

    @Override
    public int getStage_id() {
        return 1;
    }

    @Override
    public int getLimit() {
        return 20;
    }

    @Override
    public int getPage() {
        return 1;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值