使用MVP框架加载普通数据![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/bdc44c560014b8c7f98c30d4c2ad8621.png)
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;
}
}