天天看点

MVP实现购物车与订单

model文件夹下//CartModel

public class CartModel {
    private CartModelCallback callback;

    public CartModel(CartModelCallback callback) {
        this.callback = callback;
    }

    public void getData(String url){
        OkHttp3Util.doGet(url, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                callback.onCartModelResponseError();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if(response.isSuccessful()){
                    Gson gson = new Gson();
                    CartBean cartBean = gson.fromJson(response.body().string(), CartBean.class);
                    callback.onCartModelResponseSuccess(cartBean);
                }
            }
        });
    }

    public void postData(String url, Map<String, String> params){
        OkHttp3Util.doPost(url, params, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                callback.onCartModelResponseError();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if(response.isSuccessful()){
                    Gson gson = new Gson();
                    CartBean cartBean = gson.fromJson(response.body().string(), CartBean.class);
                    callback.onCartModelResponseSuccess(cartBean);
                }
            }
        });
    }
}
      

//OrderModel

public class OrderModel {
    private OrderModelCallback callback;

    public OrderModel(OrderModelCallback callback) {
        this.callback = callback;
    }

    public void getData(String url){
        OkHttp3Util.doGet(url, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                callback.onOrderModelResponseError();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if(response.isSuccessful()){
                    Gson gson = new Gson();
                    OrderBean orderBean = gson.fromJson(response.body().string(), OrderBean.class);
                    callback.onOrderModelResponseSuccess(orderBean);
                }
            }
        });
    }

    public void postData(String url, Map<String, String> params){
        OkHttp3Util.doPost(url, params, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                callback.onOrderModelResponseError();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if(response.isSuccessful()){
                    Gson gson = new Gson();
                    OrderBean orderBean = gson.fromJson(response.body().string(), OrderBean.class);
                    callback.onOrderModelResponseSuccess(orderBean);
                }
            }
        });
    }
}
      

model文件夹中的jiekou文件夹下

//CartModelCallback

public interface CartModelCallback {
    void onCartModelResponseSuccess(CartBean cartBean);
    void onCartModelResponseError();
}
      

//OrderModelCallback

public interface OrderModelCallback {
    void onOrderModelResponseSuccess(OrderBean orderBean);
    void onOrderModelResponseError();
}
      

presenter文件夹下//CartPre

public class CartPre implements CartModelCallback {
    private CartModel cartModel;
    private CartPreCallBack callBack;

    public CartPre(CartPreCallBack callBack) {
        this.cartModel = new CartModel(this);
        this.callBack = callBack;
    }

    public void getData(String url){
        cartModel.getData(url);
    }

    public void postData(String url, Map<String, String> params){
        cartModel.postData(url, params);
    }

    @Override
    public void onCartModelResponseSuccess(CartBean cartBean) {
        callBack.onCartPreResponseSuccess(cartBean);
    }

    @Override
    public void onCartModelResponseError() {
        callBack.onCartPreResponseError();
    }
}
      

//OrderPre

public class OrderPre implements OrderModelCallback {
    private OrderModel orderModel;
    private OrderPreCallBack callBack;

    public OrderPre(OrderPreCallBack callBack) {
        this.orderModel = new OrderModel(this);
        this.callBack = callBack;
    }

    public void getData(String url){
        orderModel.getData(url);
    }

    public void postData(String url, Map<String, String> params){
        orderModel.postData(url, params);
    }

    @Override
    public void onOrderModelResponseSuccess(OrderBean orderBean) {
        callBack.onOrderPreResponseSuccess(orderBean);
    }

    @Override
    public void onOrderModelResponseError() {
        callBack.onOrderPreResponseError();
    }
}
      

presenter文件夹下jiekou文件夹下

//CartPreCallBack

public interface CartPreCallBack {
    void onCartPreResponseSuccess(CartBean cartBean);
    void onCartPreResponseError();
}
      

//OrderPreCallBack

public interface OrderPreCallBack {
    void onOrderPreResponseSuccess(OrderBean orderBean);
    void onOrderPreResponseError();
}
      

View//application文件夹下

//RookieApplication

public class RookieApplication extends Application{
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}
      

View//custom文件夹下

//NumberAddSubView

public class NumberAddSubView extends LinearLayout implements View.OnClickListener {
    private Button btn_sub;
    private Button btn_add;
    private TextView tv_num;
    private Context mContext;

    /**
     * 设置默认值
     */
    private int value = 1;
    private int minValue = 1;
    private int maxValue = 5;

    public NumberAddSubView(Context context) {
        this(context, null);
    }

    public NumberAddSubView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public NumberAddSubView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        this.mContext = context;
        initView(context);
        //得到属性
        if (attrs != null) {
            TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.NumberAddSubView);
            //TintTypedArray a = TintTypedArray.obtainStyledAttributes(context, attrs, R.styleable.NumberAddSubView, defStyleAttr, 0);
            int value = a.getInt(R.styleable.NumberAddSubView_value, 0);
            setValue(value);

            int maxValue = a.getInt(R.styleable.NumberAddSubView_maxValue, 0);
            setMaxValue(maxValue);

            int minValue = a.getInt(R.styleable.NumberAddSubView_minValue, 0);
            setMinValue(minValue);

            Drawable btnSubBackground = a.getDrawable(R.styleable.NumberAddSubView_btnSubBackground);
            if (btnSubBackground != null)
                btn_sub.setBackground(btnSubBackground);

            Drawable btnAddBackground = a.getDrawable(R.styleable.NumberAddSubView_btnAddBackground);
            if (btnAddBackground != null)
                btn_sub.setBackground(btnAddBackground);

            Drawable textViewBackground = a.getDrawable(R.styleable.NumberAddSubView_textViewBackground);
            if (textViewBackground != null)
                tv_num.setBackground(textViewBackground);

            a.recycle();
        }
    }

    private void initView(Context context) {
        //第三个参数:把当前View加载到NumberAddSubView控件上
        View.inflate(context, R.layout.number_add_sub_view, this);
        btn_sub = (Button) findViewById(R.id.btn_sub);
        btn_add = (Button) findViewById(R.id.btn_add);
        tv_num = (TextView) findViewById(R.id.tv_num);

        btn_sub.setOnClickListener(this);
        btn_add.setOnClickListener(this);
    }

    public int getValue() {
        String val = tv_num.getText().toString();
        if (!TextUtils.isEmpty(val)) {
            value = Integer.parseInt(val);
        }
        return value;
    }

    public void setValue(int value) {
        this.value = value;
        tv_num.setText(value + "");
    }

    public int getMinValue() {
        return minValue;
    }

    public void setMinValue(int minValue) {
        this.minValue = minValue;
    }

    public int getMaxValue() {
        return maxValue;
    }

    public void setMaxValue(int maxValue) {
        this.maxValue = maxValue;
    }

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.btn_sub) {
//            Toast.makeText(mContext,"减",Toast.LENGTH_SHORT).show();

            subNum();
            if (onButtonClickListenter != null) {
                onButtonClickListenter.onButtonSubClick(v, value);
            }
        } else if (v.getId() == R.id.btn_add) {
//            Toast.makeText(mContext,"加",Toast.LENGTH_SHORT).show();
            addNum();
            if (onButtonClickListenter != null) {
                onButtonClickListenter.onButtonAddClick(v, value);
            }
        }
    }

    /**
     * 减少数据
     */
    private void subNum() {
        if (value > minValue) {
            value = value - 1;
            tv_num.setText(value + "");
        }
    }

    /**
     * 添加数据
     */
    private void addNum() {
        if (value < maxValue) {
            value = value + 1;
            tv_num.setText(value + "");
        }
    }

    public interface OnButtonClickListenter {
        /**
         * 当增加按钮被点击的时候回调该方法
         *
         * @param view
         * @param value
         */
        public void onButtonAddClick(View view, int value);

        /**
         * 当减少按钮被点击的时候回调这个方法
         *
         * @param view
         * @param value
         */
        public void onButtonSubClick(View view, int value);
    }

    private OnButtonClickListenter onButtonClickListenter;

    public void setOnButtonClickListenter(OnButtonClickListenter onButtonClickListenter) {
        this.onButtonClickListenter = onButtonClickListenter;
    }
}
      

bean文件夹下//CartBean

public class CartBean {
    private String msg;
    private String code;
    private List<DataBean> data;

    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;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {
        private String sellerName;
        private String sellerid;
        private List<ListBean> list;
        private int selected;

        public int getSelected() {
            return selected;
        }

        public void setSelected(int selected) {
            this.selected = selected;
        }

        public String getSellerName() {
            return sellerName;
        }

        public void setSellerName(String sellerName) {
            this.sellerName = sellerName;
        }

        public String getSellerid() {
            return sellerid;
        }

        public void setSellerid(String sellerid) {
            this.sellerid = sellerid;
        }

        public List<ListBean> getList() {
            return list;
        }

        public void setList(List<ListBean> list) {
            this.list = list;
        }

        public static class ListBean {
            private double bargainPrice;
            private String createtime;
            private String detailUrl;
            private String images;
            private int num;
            private int pid;
            private double price;
            private int pscid;
            private int selected;
            private int sellerid;
            private String subhead;
            private String title;

            public double getBargainPrice() {
                return bargainPrice;
            }

            public void setBargainPrice(double bargainPrice) {
                this.bargainPrice = bargainPrice;
            }

            public String getCreatetime() {
                return createtime;
            }

            public void setCreatetime(String createtime) {
                this.createtime = createtime;
            }

            public String getDetailUrl() {
                return detailUrl;
            }

            public void setDetailUrl(String detailUrl) {
                this.detailUrl = detailUrl;
            }

            public String getImages() {
                return images;
            }

            public void setImages(String images) {
                this.images = images;
            }

            public int getNum() {
                return num;
            }

            public void setNum(int num) {
                this.num = num;
            }

            public int getPid() {
                return pid;
            }

            public void setPid(int pid) {
                this.pid = pid;
            }

            public double getPrice() {
                return price;
            }

            public void setPrice(double price) {
                this.price = price;
            }

            public int getPscid() {
                return pscid;
            }

            public void setPscid(int pscid) {
                this.pscid = pscid;
            }

            public int getSelected() {
                return selected;
            }

            public void setSelected(int selected) {
                this.selected = selected;
            }

            public int getSellerid() {
                return sellerid;
            }

            public void setSellerid(int sellerid) {
                this.sellerid = sellerid;
            }

            public String getSubhead() {
                return subhead;
            }

            public void setSubhead(String subhead) {
                this.subhead = subhead;
            }

            public String getTitle() {
                return title;
            }

            public void setTitle(String title) {
                this.title = title;
            }
        }
    }
}
      

//OrderBean

public class OrderBean {
    private String msg;
    private String code;
    private String page;
    private List<DataBean> data;

    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;
    }

    public String getPage() {
        return page;
    }

    public void setPage(String page) {
        this.page = page;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {
        private String createtime;
        private int orderid;
        private double price;
        private int status;
        private String title;
        private int uid;

        public String getCreatetime() {
            return createtime;
        }

        public void setCreatetime(String createtime) {
            this.createtime = createtime;
        }

        public int getOrderid() {
            return orderid;
        }

        public void setOrderid(int orderid) {
            this.orderid = orderid;
        }

        public double getPrice() {
            return price;
        }

        public void setPrice(double price) {
            this.price = price;
        }

        public int getStatus() {
            return status;
        }

        public void setStatus(int status) {
            this.status = status;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        public int getUid() {
            return uid;
        }

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

继续阅读