MVp基本使用步骤

第一次接触MVP,有很多不足的地方,这里是记录自己的思路,不足以作为参考。

这里做的是用mvp请求数据

在Api类中声明请求的地址:

public class Api {
    //查询购物车
    public static final String Cart_API = "http://120.27.23.105/product/getCarts?uid=";
}

创建model,view,persenter包
UserModel 类中,自己创建方法:
//自己定义的方法
public void getUsetData(int uid){

    OkHttpClient client = new OkHttpClient();
    FormBody.Builder builder = new FormBody.Builder();
    FormBody build = builder.build();
    Request request = new Request.Builder().url(Api.Cart_API+uid).post(build).build();
    client.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
          onUser.onFaliure(call,e);

        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            if(response != null && response.isSuccessful()){
                final String result;
                try {
                    result = response.body().string();
                    System.out.println("result = " + result);

                    Gson gson = new Gson();
                    Bean bean = gson.fromJson(result, Bean.class);
                    String code = bean.getCode();

                    //失败的
                    String msg = bean.getMsg();
                    //成功的
                    List<Bean.DataBean> data = bean.getData();

                    if(code.equals("0")){
                        onUser.getUserSuccess(data);

                    }else if(code.equals("1")){
                     onUser.getUserFaliure(msg);
                    }
                }catch (Exception e){

                }
            }
        }
    });
}
声明一个接口,Alt+Insert,创建set方法
private onUser onUser;

public void setOnUser(UserModel.onUser onUser) {
    this.onUser = onUser;
}

public interface onUser{
    //成功,data
    void getUserSuccess( List<Bean.DataBean> data);
    //失败,吐司事件
    void getUserFaliure(String msg);
    //彻底失败
    void onFaliure(Call call, IOException e);
}

UserView接口  
将onUser接口中的三个方法复制
public interface UserView {
    //成功,data
    void getUserSuccess( List<Bean.DataBean> data);
    //失败,吐司事件
    void getUserFaliure(String msg);
    //彻底失败
    void onFaliure(Call call, IOException e);
}

UserPresenter 类
声明Context,View,Model
private UserModel userModel;
private Context context;
private UserView userView;

public UserPresenter(Context context, UserView userView) {
    this.context = context;
    this.userView = userView;
    userModel = new UserModel();
    userModel.setOnUser(this);//这里写的是Model类中的set方法
}
注意!!!!
 
 
UserModel是实例化出来的,需要单独拎出来
this会报错,implements UserModel.onUser

//自己定义的方法
public void requestUser(int uid){
    userModel.getUsetData(uid);
}

@Override
public void getUserSuccess(List<Bean.DataBean> data) {
    userView.getUserSuccess(data);

}

@Override
public void getUserFaliure(String msg) {
    userView.getUserFaliure(msg);

}

@Override
public void onFaliure(Call call, IOException e) {
    userView.onFaliure(call,e);
}

接下来是MainActivity类中的,来实例化Presenter
146是我传递过去的uid
UserPresenter presenter = new UserPresenter(MainActivity.this,this);
presenter.requestUser(146);

会报错,Alt+Enter来重写三个方法
主要是在成功后的方法里面写逻辑
@Override
public void getUserSuccess( List<Bean.DataBean> data) {

如果用的是RecyclerView来实现,那么就传递data; 
data是请求成功后的list集合   

}














猜你喜欢

转载自blog.csdn.net/color_0716/article/details/78312583
今日推荐