MVP post请求

从Google推出官方MVP架构demo到现在大概有一年多的时间了,半年前大概在所有的Android技术社区都有提到MVP架构,现在关于MVP架构的话题似乎没有以前那么多了,可能是因为大家都已经能够熟练的使用MVP了。在这里先炒碗闲饭,提供了一个快速生成MVP模式的插件。地址

定义接口

API

public static final String INSERT="http://120.27.23.105/product/";
ApiService

//创建订单
@POST
Observable<Order> insertorder(@Url String url , @QueryMap Map<String , String> map);
bean类(自动生成和map需要传的值)

自动生成

public class Order {
    /**
     * msg : 天呢!有钱人,总价不正确!
     * code : 1
     */

    private String msg;
    private String code;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }
}
//map需要传的值
public class Insert {
    
    private String uid;
    private String price;

    public Insert(String uid, String price) {
        this.uid = uid;
        this.price = price;
    }

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }
}
model层(Imodel和model类)

public interface Omodel {
    void insertorder(String url, Insert insert);
}
public class OrderModel implements Omodel {
    private OnInsert onInsert ;
    public interface  OnInsert{
        void OnInsertListener(String code);
    }
    public void setOnInsert (OnInsert onInsert ){
        this.onInsert = onInsert;
    }

    @Override
    public void insertorder(String url, Insert insert) {

        Map map = new HashMap<>() ;
        map.put("uid" , insert.getUid());
        map.put("price" , insert.getPrice());
        Retrofit retrofit = new Retrofit.Builder().
                baseUrl(url).addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build();
        ApiServer apiServer = retrofit.create(ApiServer.class);
        Observable<Order> insertorder = apiServer.insertorder("createOrder", map);
        insertorder.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<Order>() {
                    @Override
                    public void onCompleted() {

                        Log.d("123" , "onCompleted");
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.d("123" , "onError");
                        e.printStackTrace();
                    }

                    @Override
                    public void onNext(Order order) {
                        Log.d("123" , "onNext");
                        String code = order.getCode();
                        onInsert.OnInsertListener(code);
                    }
                });

    }
}
presenter层

public class Opresenter implements OrderModel.OnInsert {
    private final Oview oview;
    private final OrderModel orderModel ;

    public Opresenter(Oview oview) {
        this.oview = oview;
        this.orderModel = new OrderModel() ;
    }
    public  void insert(String url , Insert insert){
        orderModel.setOnInsert(this);
        orderModel.insertorder(url , insert);
    }

    @Override
    public void OnInsertListener(String code) {
        SharePresenters.put("insert" , code);
        if (code.equals("0")){
            oview.insertSuccess();
        }else{
            oview.insertFailed();
        }
    }
}
view层

public interface Oview {

//如果需要在页面获取值,需要在这里进行定义比如:
//String name();
//String pass();
//创建成功 void insertSuccess() ; //创建失败 void insertFailed() ;} 主类继承view层
public class OrderActivity extends AppCompatActivity implements Oview{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_order);
        int uid = (int) SharePresenters.get("uid", 0);
        String  price = (String) SharePresenters.get("price", "0");
        Log.d("OrderActivity" , uid + price);
        Opresenter opresenter = new Opresenter(this) ;
        opresenter.insert(Api.INSERT,new Insert(uid+"" , price));
    }

    @Override
    public void insertSuccess() {
        Toasts.show(this , "添加订单成功!" , Toast.LENGTH_SHORT);
    }

    @Override
    public void insertFailed() {
        Toasts.show(this , "添加订单失败!" , Toast.LENGTH_SHORT);
    }
}

猜你喜欢

转载自blog.csdn.net/taa1007/article/details/78565259
MVP
今日推荐