购物车

作者: ForCrazyLove | 来源:发表于2017-12-20 22:38 被阅读0次

    详情页面

    packagecom.example.shoppingcar;

    importandroid.content.Intent;

    importandroid.os.Bundle;

    importandroid.support.v7.app.AppCompatActivity;

    importandroid.support.v7.widget.LinearLayoutManager;

    importandroid.support.v7.widget.RecyclerView;

    importandroid.widget.TextView;

    importcom.example.shoppingcar.bean.CartBean;

    importcom.example.shoppingcar.presenter.cartPresenter;

    importcom.example.shoppingcar.view.ViewCallBack;

    importjava.util.List;

    importbutterknife.Bind;

    importbutterknife.ButterKnife;

    importbutterknife.OnClick;

    public classXQActivityextendsAppCompatActivityimplementsViewCallBack {

    @Bind(R.id.GWC)

    TextViewGWC;

    @Bind(R.id.XQ_Recy)

    RecyclerViewXQRecy;

    privatecom.example.shoppingcar.presenter.cartPresentercartPresenter;

    @Override

    protected voidonCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_xq);

    ButterKnife.bind(this);

    cartPresenter=newcartPresenter(this);

    cartPresenter.cartFF();

    }

    @OnClick(R.id.GWC)

    public voidonViewClicked() {

    startActivity(newIntent(XQActivity.this, MainActivity.class));

    finish();

    }

    @Override

    public voidsuccess(CartBean cartBean) {

    List data = cartBean.data;

    XQRecy.setLayoutManager(newLinearLayoutManager(this));

    XQRecy.setAdapter(newXQAdapter(this, data));

    }

    @Override

    public voidfailure(Exception e) {

    }

    @Override

    protected voidonDestroy() {

    super.onDestroy();

    cartPresenter.detach();

    }

    }

    详情页面Adapter

    packagecom.example.shoppingcar;

    importandroid.content.Context;

    importandroid.net.Uri;

    importandroid.support.v7.widget.RecyclerView;

    importandroid.view.View;

    importandroid.view.ViewGroup;

    importandroid.widget.Button;

    importandroid.widget.TextView;

    importandroid.widget.Toast;

    importcom.example.shoppingcar.bean.CartBean;

    importcom.example.shoppingcar.bean.addBean;

    importcom.example.shoppingcar.utils.APIFactory;

    importcom.facebook.drawee.backends.pipeline.Fresco;

    importcom.facebook.drawee.view.SimpleDraweeView;

    importjava.util.HashMap;

    importjava.util.List;

    importjava.util.Map;

    importrx.Observer;

    public classXQAdapterextendsRecyclerView.Adapter {

    Contextcontext;

    Listdata;

    publicXQAdapter(XQActivity xqActivity, List data) {

    this.context= xqActivity;

    this.data= data;

    Fresco.initialize(context);

    }

    @Override

    publicRecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent,intviewType) {

    View view = View.inflate(context, R.layout.xqitem,null);

    return newXQViewHolder(view);

    }

    @Override

    public voidonBindViewHolder(RecyclerView.ViewHolder holder,final intposition) {

    //拆分images字段

    String[] split =data.get(position).images.split("\\|");

    //设置商品的图片

    ((XQViewHolder) holder).img.setImageURI(Uri.parse(split[0]));

    ((XQViewHolder) holder).name.setText(data.get(position).title);

    ((XQViewHolder) holder).price.setText(data.get(position).price+"");

    ((XQViewHolder) holder).btn.setOnClickListener(newView.OnClickListener() {

    @Override

    public voidonClick(View view) {

    intpid =data.get(position).pid;

    Map map =newHashMap();

    map.put("uid","4421");

    map.put("pid", pid +"");

    APIFactory.getInstance().add(map,newObserver() {

    @Override

    public voidonCompleted() {

    }

    @Override

    public voidonError(Throwable e) {

    }

    @Override

    public voidonNext(addBean addBean) {

    String code = addBean.code;

    if(code.equals("0")) {

    Toast.makeText(context,"加购成功", Toast.LENGTH_SHORT).show();

    }else if(code.equals("1")) {

    Toast.makeText(context,"天呢!用户未登录或用户id不能为空", Toast.LENGTH_SHORT).show();

    }

    }

    });

    }

    });

    }

    @Override

    public intgetItemCount() {

    returndata.size();

    }

    classXQViewHolderextendsRecyclerView.ViewHolder {

    private finalSimpleDraweeViewimg;

    private finalTextViewname;

    private finalTextViewprice;

    private finalButtonbtn;

    publicXQViewHolder(View itemView) {

    super(itemView);

    img= itemView.findViewById(R.id.xq_fresco);

    name= itemView.findViewById(R.id.xq_name);

    price= itemView.findViewById(R.id.xq_price);

    btn= itemView.findViewById(R.id.xq_btn);

    }

    }

    }

    购物车Activity


    packagecom.example.shoppingcar;

    importandroid.content.Intent;

    importandroid.os.Bundle;

    importandroid.support.v7.app.AppCompatActivity;

    importandroid.support.v7.widget.LinearLayoutManager;

    importandroid.support.v7.widget.RecyclerView;

    importandroid.view.View;

    importandroid.widget.CheckBox;

    importandroid.widget.LinearLayout;

    importandroid.widget.TextView;

    importandroid.widget.Toast;

    importcom.example.shoppingcar.bean.queryBean;

    importcom.example.shoppingcar.presenter.queryPresenter;

    importcom.example.shoppingcar.view.queryView;

    importbutterknife.Bind;

    importbutterknife.ButterKnife;

    public classMainActivityextendsAppCompatActivityimplementsqueryView {

    @Bind(R.id.bianji)

    TextViewbianji;

    @Bind(R.id.recycler_View)

    RecyclerViewrecyclerView;

    @Bind(R.id.quanxuan)

    CheckBoxquanxuan;

    @Bind(R.id.total_price)

    TextViewtotalPrice;

    @Bind(R.id.total_num)

    TextViewtotalNum;

    @Bind(R.id.quzhifu)

    TextViewquzhifu;

    @Bind(R.id.shanchu)

    TextViewshanchu;

    @Bind(R.id.linear_shanchu)

    LinearLayoutlinearShanchu;

    @Bind(R.id.activity_main)

    LinearLayoutactivityMain;

    @Bind(R.id.back)

    TextViewback;

    privateRecyAdapterrecyAdapter;

    privatecom.example.shoppingcar.presenter.queryPresenterqueryPresenter;

    @Override

    protected voidonCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    ButterKnife.bind(this);

    bianji.setTag(1);//编辑设置TAG=1

    quanxuan.setTag(1);//全选设置TAG=1  为未选中

    queryPresenter=newqueryPresenter(this);

    recyclerView.setLayoutManager(newLinearLayoutManager(this));

    recyAdapter=newRecyAdapter(this);

    queryPresenter.queryFF();

    recyclerView.setAdapter(recyAdapter);

    back.setOnClickListener(newView.OnClickListener() {

    @Override

    public voidonClick(View view) {

    startActivity(newIntent(MainActivity.this, XQActivity.class));

    finish();

    }

    });

    //调用RecyAdapter里面的接口,设置全选按钮  总价  总数量

    recyAdapter.setUpdateListener(newRecyAdapter.UpdateListener() {

    @Override

    public voidsetTotal(String total, String num,booleanallCheck) {

    //设置ui的改变

    totalNum.setText("共"+ num +"件商品");//总数量

    totalPrice.setText("总价 :¥"+ total +"元");//总价

    if(allCheck) {

    quanxuan.setTag(2);

    quanxuan.setBackgroundResource(R.drawable.shopcart_selected);

    }else{

    quanxuan.setTag(1);

    quanxuan.setBackgroundResource(R.drawable.shopcart_unselected);

    }

    quanxuan.setChecked(allCheck);

    }

    });

    //这里只做ui更改, 点击全选按钮,,调到adapter里面操作

    quanxuan.setOnClickListener(newView.OnClickListener() {

    @Override

    public voidonClick(View v) {

    //调用adapter里面的方法 ,,把当前quanxuan状态传递过去

    inttag = (int)quanxuan.getTag();

    if(tag ==1) {

    quanxuan.setTag(2);

    quanxuan.setBackgroundResource(R.drawable.shopcart_selected);

    }else{

    quanxuan.setTag(1);

    quanxuan.setBackgroundResource(R.drawable.shopcart_unselected);

    }

    recyAdapter.quanXuan(quanxuan.isChecked());

    }

    });

    //点击批量删除的按钮

    shanchu.setOnClickListener(newView.OnClickListener() {

    @Override

    public voidonClick(View view) {

    recyAdapter.shanChu();

    }

    });

    //点击编辑按钮,

    bianji.setOnClickListener(newView.OnClickListener() {

    @Override

    public voidonClick(View view) {

    inttag = (int)bianji.getTag();

    if(tag ==1) {

    bianji.setText("完成");

    bianji.setTag(2);

    quzhifu.setVisibility(View.GONE);

    shanchu.setVisibility(View.VISIBLE);

    }else{

    bianji.setText("编辑");

    bianji.setTag(1);

    quzhifu.setVisibility(View.VISIBLE);

    shanchu.setVisibility(View.GONE);

    }

    }

    });

    }

    @Override

    public voidsuccess(queryBean queryBean) {

    if(queryBean !=null) {

    //将返回的数据添加到适配器中

    recyAdapter.add(queryBean);

    }

    }

    @Override

    public voidfailure() {

    System.out.println("网不好");

    runOnUiThread(newRunnable() {

    @Override

    public voidrun() {

    Toast.makeText(MainActivity.this,"网有点慢", Toast.LENGTH_SHORT).show();

    }

    });

    }

    @Override

    protected voidonDestroy() {

    super.onDestroy();

    //解除绑定

    queryPresenter.detach();

    }

    }

    购物车Adapter

    packagecom.example.shoppingcar;

    importandroid.content.Context;

    importandroid.content.DialogInterface;

    importandroid.net.Uri;

    importandroid.support.v7.app.AlertDialog;

    importandroid.support.v7.widget.RecyclerView;

    importandroid.view.View;

    importandroid.view.ViewGroup;

    importandroid.widget.CheckBox;

    importandroid.widget.ImageView;

    importandroid.widget.TextView;

    importandroid.widget.Toast;

    importcom.example.shoppingcar.bean.deleteBean;

    importcom.example.shoppingcar.bean.queryBean;

    importcom.example.shoppingcar.presenter.deletePresenter;

    importcom.example.shoppingcar.presenter.queryPresenter;

    importcom.example.shoppingcar.utils.APIFactory;

    importcom.example.shoppingcar.view.deleteView;

    importcom.example.shoppingcar.view.queryView;

    importcom.facebook.drawee.backends.pipeline.Fresco;

    importjava.util.ArrayList;

    importjava.util.HashMap;

    importjava.util.List;

    importjava.util.Map;

    importrx.Observer;

    public classRecyAdapterextendsRecyclerView.AdapterimplementsqueryView, deleteView {

    queryPresenterqueryPresenter;

    deletePresenterdeletePresenter;

    Contextcontext;

    //创建大的集合

    privateListlist;

    //存放商家的id和商家的名称的map集合

    privateMapmap=newHashMap<>();

    publicRecyAdapter(MainActivity mainActivity) {

    this.context= mainActivity;

    queryPresenter=newqueryPresenter(this);

    deletePresenter=newdeletePresenter(this);

    //初始化Fresco

    Fresco.initialize(context);

    }

    @Override

    publicRecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent,intviewType) {

    View view = View.inflate(context, R.layout.recy_cart_item,null);

    return newMyViewHolder(view);

    }

    @Override

    public voidonBindViewHolder(finalRecyclerView.ViewHolder holder,final intposition) {

    /**

    * 设置商铺的 shop_checkbox和商铺的名字 显示或隐藏

    * */

    if(list.get(position).getIsFirst() ==1) {

    //显示商家

    ((MyViewHolder) holder).shop_checkbox.setVisibility(View.VISIBLE);

    ((MyViewHolder) holder).shop_name.setVisibility(View.VISIBLE);

    //设置shop_checkbox的选中状态

    ((MyViewHolder) holder).shop_checkbox.setChecked(list.get(position).isShop_check());

    ((MyViewHolder) holder).shop_name.setText(map.get(String.valueOf(list.get(position).getSellerid())) +" >");

    }else{//2

    //隐藏商家

    ((MyViewHolder) holder).shop_name.setVisibility(View.GONE);

    ((MyViewHolder) holder).shop_checkbox.setVisibility(View.GONE);

    }

    //拆分images字段

    String[] split =list.get(position).getImages().split("\\|");

    //设置商品的图片

    ((MyViewHolder) holder).item_face.setImageURI(Uri.parse(split[0]));

    // ImageLoader.getInstance().displayImage(split[0],holder.item_face);

    //控制商品的item_checkbox,,根据字段改变

    ((MyViewHolder) holder).item_checkbox.setChecked(list.get(position).isItem_check());

    ((MyViewHolder) holder).item_name.setText(list.get(position).getTitle());

    ((MyViewHolder) holder).item_price.setText(list.get(position).getPrice() +"");

    //调用customjiajian里面的方法设置 加减号中间的数字

    ((MyViewHolder) holder).customJiaJian.setEditText(list.get(position).getNum());

    ((MyViewHolder) holder).item_bianji.setTag(1);

    //点击item编辑才显示 自定义加减框

    ((MyViewHolder) holder).item_bianji.setOnClickListener(newView.OnClickListener() {

    @Override

    public voidonClick(View view) {

    inttag = (int) ((MyViewHolder)holder).item_bianji.getTag();

    if(tag ==1) {

    //加减号显示

    ((MyViewHolder)holder).item_bianji.setText("完成");

    ((MyViewHolder)holder).customJiaJian.setVisibility(View.VISIBLE);

    //商品的名称隐藏

    ((MyViewHolder)holder).item_name.setVisibility(View.GONE);

    ((MyViewHolder)holder).item_yansechima.setVisibility(View.VISIBLE);

    ((MyViewHolder)holder).item_price.setVisibility(View.GONE);

    ((MyViewHolder)holder).item_delete.setVisibility(View.VISIBLE);

    ((MyViewHolder)holder).item_bianji.setTag(2);

    }else{

    //相反的 隐藏的显示,显示的隐藏

    //加减号显示

    ((MyViewHolder)holder).item_bianji.setText("编辑");

    ((MyViewHolder)holder).customJiaJian.setVisibility(View.GONE);

    //商品的名称隐藏

    ((MyViewHolder)holder).item_name.setVisibility(View.VISIBLE);

    ((MyViewHolder)holder).item_yansechima.setVisibility(View.GONE);

    ((MyViewHolder)holder).item_price.setVisibility(View.VISIBLE);

    ((MyViewHolder)holder).item_delete.setVisibility(View.GONE);

    ((MyViewHolder)holder).item_bianji.setTag(1);

    }

    }

    });

    //设置点击多选框

    //商铺的shop_checkbox点击事件 ,控制商品的item_checkbox

    ((MyViewHolder) holder).shop_checkbox.setOnClickListener(newView.OnClickListener() {

    @Override

    public voidonClick(View v) {

    //先改变数据源中的shop_check

    list.get(position).setShop_check(((MyViewHolder)holder).shop_checkbox.isChecked());

    for(inti =0; i

    //如果是同一家商铺的 都给成相同状态

    if(list.get(position).getSellerid() ==list.get(i).getSellerid()) {

    //当前条目的选中状态 设置成 当前商铺的选中状态

    list.get(i).setItem_check(((MyViewHolder)holder).shop_checkbox.isChecked());

    }

    }

    //刷新适配器

    notifyDataSetChanged();

    //调用求和的方法

    sum(list);

    }

    });

    //商品的item_checkbox点击事件,控制商铺的shop_checkbox

    ((MyViewHolder) holder).item_checkbox.setOnClickListener(newView.OnClickListener() {

    @Override

    public voidonClick(View v) {

    //先改变数据源中的item_checkbox

    list.get(position).setItem_check(((MyViewHolder)holder).item_checkbox.isChecked());

    //反向控制商铺的shop_checkbox

    for(inti =0; i

    for(intj =0; j

    //如果两个商品是同一家店铺的 并且 这两个商品的item_checkbox选中状态不一样

    if(list.get(i).getSellerid() ==list.get(j).getSellerid() && !list.get(j).isItem_check()) {

    //就把商铺的shop_checkbox改成false

    list.get(i).setShop_check(false);

    break;

    }else{

    //同一家商铺的商品 选中状态都一样,就把商铺shop_checkbox状态改成true

    list.get(i).setShop_check(true);

    }

    }

    }

    //更新适配器

    notifyDataSetChanged();

    //调用求和的方法

    sum(list);

    }

    });

    //删除条目的点击事件

    ((MyViewHolder) holder).item_delete.setOnClickListener(newView.OnClickListener() {

    @Override

    public voidonClick(View v) {

    //                list.remove(position);//移除集合中的当前数据

    //删除完当前的条目 重新判断商铺的显示隐藏

    intpid =list.get(position).getPid();

    Map mapDel =newHashMap();

    mapDel.put("uid","4421");

    mapDel.put("pid", pid +"");

    APIFactory.getInstance().delete(mapDel,newObserver() {

    @Override

    public voidonCompleted() {

    }

    @Override

    public voidonError(Throwable e) {

    }

    @Override

    public voidonNext(deleteBean deleteBean) {

    String code = deleteBean.code;

    if(code.equals("0")) {

    Toast.makeText(context,"删除购物车成功", Toast.LENGTH_SHORT).show();

    list.remove(position);

    setFirst(list);

    //调用重新求和

    sum(list);

    notifyDataSetChanged();

    }else if(code.equals("1")) {

    Toast.makeText(context,"天呢!商品id不能为空", Toast.LENGTH_SHORT).show();

    }

    }

    });

    }

    });

    //加减号的监听,

    ((MyViewHolder) holder).customJiaJian.setCustomListener(newCustomJiaJian.CustomListener() {

    @Override

    public voidjiajian(intcount) {

    //改变数据源中的数量

    list.get(position).setNum(count);

    notifyDataSetChanged();

    sum(list);

    }

    @Override

    //输入值 求总价

    public voidshuRuZhi(intcount) {

    list.get(position).setNum(count);

    notifyDataSetChanged();

    sum(list);

    }

    });

    }

    @Override

    public intgetItemCount() {

    returnlist==null?0:list.size();

    }

    classMyViewHolderextendsRecyclerView.ViewHolder {

    private finalCheckBoxshop_checkbox;

    private finalTextViewshop_name;

    private finalCheckBoxitem_checkbox;

    private finalTextViewitem_name;

    private finalTextViewitem_price;

    private finalCustomJiaJiancustomJiaJian;

    //private final ImageView item_delete;

    private finalTextViewitem_delete;

    private finalImageViewitem_face;

    private finalTextViewitem_bianji;

    private finalTextViewitem_yansechima;

    publicMyViewHolder(View itemView) {

    super(itemView);

    //拿到控件

    shop_checkbox= (CheckBox) itemView.findViewById(R.id.shop_checkbox);

    shop_name= (TextView) itemView.findViewById(R.id.shop_name);

    item_checkbox= (CheckBox) itemView.findViewById(R.id.item_checkbox);

    item_name= (TextView) itemView.findViewById(R.id.item_name);

    item_price= (TextView) itemView.findViewById(R.id.item_price);

    customJiaJian= (CustomJiaJian) itemView.findViewById(R.id.custom_jiajian);

    //item_delete = (ImageView) itemView.findViewById(R.id.item_delete);

    item_delete= (TextView) itemView.findViewById(R.id.item_delete);

    item_face= (ImageView) itemView.findViewById(R.id.item_face);

    item_bianji= itemView.findViewById(R.id.item_bianji);

    item_yansechima= itemView.findViewById(R.id.item_yansechima);

    }

    }

    UpdateListenerupdateListener;

    public voidsetUpdateListener(UpdateListener updateListener) {

    this.updateListener= updateListener;

    }

    //view层调用这个方法, 点击quanxuan按钮的操作

    public voidquanXuan(booleanchecked) {

    for(inti =0; i

    list.get(i).setShop_check(checked);

    list.get(i).setItem_check(checked);

    }

    notifyDataSetChanged();

    sum(list);

    }

    private voidsum(List list) {

    inttotalNum =0;

    floattotalMoney =0.0f;

    booleanallCheck =true;

    for(inti =0; i < list.size(); i++) {

    if(list.get(i).isItem_check()) {

    totalNum += list.get(i).getNum();

    totalMoney += list.get(i).getNum() * list.get(i).getPrice();

    }else{

    //如果有个未选中,就标记为false

    allCheck =false;

    }

    }

    //接口回调出去 把总价 总数量 和allcheck 传给view层

    updateListener.setTotal(totalMoney +"", totalNum +"", allCheck);

    }

    //批量删除的按钮

    public voidshanChu() {

    //存储删除的id

    finalList delete_listid =newArrayList<>();

    for(inti =0; i

    if(list.get(i).isItem_check()) {

    //将要删除的pid添加到这个集合里

    delete_listid.add(list.get(i).getPid());

    }

    }

    if(delete_listid.size() ==0) {

    //如果没有要删除的,就吐司提示

    Toast.makeText(context,"请选中至少一个商品后再删除", Toast.LENGTH_SHORT).show();

    return;

    }

    //弹框

    finalAlertDialog.Builder dialog =newAlertDialog.Builder(context);

    dialog.setTitle("操作提示");

    dialog.setMessage("你确定要删除这"+ delete_listid.size() +"个商品?");

    dialog.setPositiveButton("确定",newDialogInterface.OnClickListener() {

    @Override

    public voidonClick(DialogInterface dialogInterface,inti) {

    //使用接口删除

    String a ="";

    for(intj =0; j

    // a+=delete_listid.get(j)+"";

    Integer integer =delete_listid.get(j);

    String pid = String.valueOf(integer);

    deletePresenter.deleteFF(pid);

    // list.remove(j);

    }

    //  Toast.makeText(context, a,Toast.LENGTH_SHORT).show();

    }

    }).setNegativeButton("取消",newDialogInterface.OnClickListener() {

    @Override

    public voidonClick(DialogInterface dialogInterface,inti) {

    dialogInterface.cancel();

    }

    }).create().show();

    }

    public voidadd(queryBean queryBean) {

    if(list==null) {

    list=newArrayList<>();

    }

    if(queryBean !=null) {

    for(queryBean.DataBean shop : queryBean.getData()) {

    map.put(shop.getSellerid(), shop.getSellerName());

    //第二层遍历里面的商品

    for(inti =0; i < shop.getList().size(); i++) {

    //添加到list集合里

    list.add(shop.getList().get(i));

    }

    }

    //调用方法 设置显示或隐藏 商铺名

    setFirst(list);

    }

    notifyDataSetChanged();

    }

    /**

    * 设置数据源,控制是否显示商家

    */

    private voidsetFirst(List list) {

    if(list.size() >0) {

    list.get(0).setIsFirst(1);

    //从第二条开始遍历

    for(inti =1; i < list.size(); i++) {

    //如果和前一个商品是同一家商店的

    if(list.get(i).getSellerid() == list.get(i -1).getSellerid()) {

    //设置成2不显示商铺

    list.get(i).setIsFirst(2);

    }else{//设置成1显示商铺

    list.get(i).setIsFirst(1);

    //如果当前条目选中,把当前的商铺也选中

    if(list.get(i).isItem_check() ==true) {

    list.get(i).setShop_check(list.get(i).isItem_check());

    }

    }

    }

    }

    }

    @Override

    public voidsuccess(queryBean queryBean) {

    list.clear();

    add(queryBean);

    }

    @Override

    public voidsuccess(deleteBean deleteBean) {

    queryPresenter.queryFF();

    }

    @Override

    public voidfailure() {

    System.out.println("网不好");

    Toast.makeText(context,"adapter网有点慢", Toast.LENGTH_SHORT).show();

    }

    //接口

    public interfaceUpdateListener {

    public voidsetTotal(String total, String num,booleanallCheck);

    }

    }

    自定义控件:加减器


    packagecom.example.shoppingcar;

    importandroid.content.Context;

    importandroid.support.annotation.Nullable;

    importandroid.util.AttributeSet;

    importandroid.view.View;

    importandroid.widget.Button;

    importandroid.widget.EditText;

    importandroid.widget.LinearLayout;

    importandroid.widget.Toast;

    /**

    * Created by Menglucywhh on 2017/12/19.

    */

    public classCustomJiaJianextendsLinearLayout{

    privateButtonreverse;

    privateButtonadd;

    privateEditTextcountEdit;

    private intmCount=1;

    publicCustomJiaJian(Context context) {

    super(context);

    }

    publicCustomJiaJian(finalContext context,@NullableAttributeSet attrs) {

    super(context, attrs);

    View view = View.inflate(context, R.layout.custom_jiajian,this);

    reverse= (Button) view.findViewById(R.id.reverse);

    add= (Button) view.findViewById(R.id.add);

    countEdit= (EditText) view.findViewById(R.id.count);

    reverse.setOnClickListener(newOnClickListener() {

    @Override

    public voidonClick(View v) {

    String content =countEdit.getText().toString().trim();

    intcount = Integer.valueOf(content);

    if(count>1){

    mCount= count-1;

    countEdit.setText(mCount+"");

    //回调给adapter里面

    if(customListener!=null){

    customListener.jiajian(mCount);

    }

    }else{

    Toast.makeText(context,"最小数量为1", Toast.LENGTH_SHORT).show();

    }

    }

    });

    add.setOnClickListener(newOnClickListener() {

    @Override

    public voidonClick(View v) {

    String content =countEdit.getText().toString().trim();

    intcount = Integer.valueOf(content)+1;

    mCount= count;

    countEdit.setText(mCount+"");

    //接口回调给adapter

    if(customListener!=null){

    customListener.jiajian(mCount);

    }

    }

    });

    }

    publicCustomJiaJian(Context context,@NullableAttributeSet attrs,intdefStyleAttr) {

    super(context, attrs, defStyleAttr);

    }

    CustomListenercustomListener;

    public voidsetCustomListener(CustomListener customListener){

    this.customListener= customListener;

    }

    //加减的接口

    public interfaceCustomListener{

    public voidjiajian(intcount);

    public voidshuRuZhi(intcount);

    }

    public voidsetEditText(intnum) {

    if(countEdit!=null){

    countEdit.setText(num+"");

    }

    }

    }

    Retrofit的URL


    packagecom.example.shoppingcar;

    importcom.example.shoppingcar.bean.CartBean;

    importcom.example.shoppingcar.bean.addBean;

    importcom.example.shoppingcar.bean.deleteBean;

    importcom.example.shoppingcar.bean.queryBean;

    importjava.util.Map;

    importretrofit2.http.GET;

    importretrofit2.http.QueryMap;

    importrx.Observable;

    public interfaceIGetHttpUrl {

    @GET("searchProducts?page=1&source=android")

    Observable cartUrl(@QueryMapMap map);

    //    http://120.27.23.105/product/searchProducts?keywords=手机&page=1&source=android

    @GET("addCart?token=0DA2B4A9F80689086B333CADEB7F306B&source=android")

    Observable addUrl(@QueryMapMap map);

    //    Observable addUrl(@Query("uid") String uid, @Query("pid") String pid);

    @GET("getCarts?token=0DA2B4A9F80689086B333CADEB7F306B&source=android")

    Observable queryUrl(@QueryMapMap map);

    //    Observable queryUrl(@Query("uid") String uid);

    @GET("deleteCart?token=0DA2B4A9F80689086B333CADEB7F306B&source=android")

    Observable deleteUrl(@QueryMapMap map);

    //    Observable deleteUrl(@Query("uid") String uid, @Query("pid") String pid);

    }

    APIFactory工具类

    packagecom.example.shoppingcar.utils;

    importcom.example.shoppingcar.bean.CartBean;

    importcom.example.shoppingcar.bean.addBean;

    importcom.example.shoppingcar.bean.deleteBean;

    importcom.example.shoppingcar.bean.queryBean;

    importjava.util.Map;

    importrx.Observer;

    importrx.android.schedulers.AndroidSchedulers;

    importrx.schedulers.Schedulers;

    public classAPIFactory {

    private staticAPIFactoryfactory=null;

    public staticAPIFactory getInstance() {

    if(factory==null) {

    synchronized(APIFactory.class) {

    if(factory==null) {

    factory=newAPIFactory();

    }

    }

    }

    returnfactory;

    }

    public voidquery(Map map, Observer observer) {

    RetrofitUtils.getInstance().queryUrl(map)

    .subscribeOn(Schedulers.io())

    .observeOn(AndroidSchedulers.mainThread())

    .subscribe(observer);

    }

    public voiddelete(Map map, Observer observer) {

    RetrofitUtils.getInstance().deleteUrl(map)

    .subscribeOn(Schedulers.io())

    .observeOn(AndroidSchedulers.mainThread())

    .subscribe(observer);

    }

    public voidcart(Map map, Observer observer) {

    RetrofitUtils.getInstance().cartUrl(map)

    .subscribeOn(Schedulers.io())

    .observeOn(AndroidSchedulers.mainThread())

    .subscribe(observer);

    }

    public voidadd(Map map, Observer observer) {

    RetrofitUtils.getInstance().addUrl(map)

    .subscribeOn(Schedulers.io())

    .observeOn(AndroidSchedulers.mainThread())

    .subscribe(observer);

    }

    }

    OKhttp封装

    packagecom.example.shoppingcar.utils;

    importjava.util.concurrent.TimeUnit;

    importokhttp3.OkHttpClient;

    public classOkhttpUtils {

    private staticOkHttpClientclient=null;

    public staticOkHttpClient getInstance() {

    if(client==null) {

    synchronized(OkhttpUtils.class) {

    if(client==null) {

    client=newOkHttpClient.Builder()

    .writeTimeout(20000, TimeUnit.SECONDS)

    .readTimeout(20000, TimeUnit.SECONDS)

    .connectTimeout(20000, TimeUnit.SECONDS)

    .build();

    }

    }

    }

    returnclient;

    }

    }

    Retrofit封装


    packagecom.example.shoppingcar.utils;

    importcom.example.shoppingcar.IGetHttpUrl;

    importretrofit2.Retrofit;

    importretrofit2.adapter.rxjava.RxJavaCallAdapterFactory;

    importretrofit2.converter.gson.GsonConverterFactory;

    public classRetrofitUtils {

    private staticIGetHttpUrlservice=null;

    public staticIGetHttpUrl getInstance() {

    if(service==null) {

    synchronized(RetrofitUtils.class) {

    if(service==null){

    Retrofit retrofit =newRetrofit.Builder()

    .baseUrl("http://120.27.23.105/product/")

    .addConverterFactory(GsonConverterFactory.create())

    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())

    .client(OkhttpUtils.getInstance())

    .build();

    service= retrofit.create(IGetHttpUrl.class);

    }

    }

    }

    returnservice;

    }

    }

    addBean


    public classaddBean {

    /**

    * msg : 加购成功

    * code : 0

    */

    publicStringmsg;

    publicStringcode;

    }

    cartBean

    public classCartBean {

    /**

    * msg : 查询成功

    * code : 0

    * data : [{"bargainPrice":99,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/4345173.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t6037/35/2944615848/95178/6cd6cff0/594a3a10Na4ec7f39.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6607/258/1025744923/75738/da120a2d/594a3a12Ne3e6bc56.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6370/292/1057025420/64655/f87644e3/594a3a12N5b900606.jpg!q70.jpg","itemtype":1,"pid":45,"price":2999,"pscid":39,"salenum":4666,"sellerid":1,"subhead":"高清双摄,就是清晰!2000+1600万高清摄像头,6GB大内存+高通骁龙835处理器,性能怪兽!","title":"一加手机5 (A5000) 6GB+64GB 月岩灰 全网通 双卡双待 移动联通电信4G手机"},{"bargainPrice":6666,"createtime":"2017-10-10T16:01:31","detailUrl":"https://item.m.jd.com/product/5089273.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t8284/363/1326459580/71585/6d3e8013/59b857f2N6ca75622.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9346/182/1406837243/282106/68af5b54/59b8480aNe8af7f5c.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8434/54/1359766007/56140/579509d9/59b85801Nfea207db.jpg!q70.jpg","itemtype":0,"pid":46,"price":234,"pscid":39,"salenum":868,"sellerid":2,"subhead":"【iPhone新品上市】新一代iPhone,让智能看起来更不一样","title":"Apple iPhone 8 Plus (A1864) 64GB 金色 移动联通电信4G手机"},{"bargainPrice":1599,"createtime":"2017-10-14T21:48:08","detailUrl":"https://item.m.jd.com/product/1993026402.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t5863/302/8961270302/97126/41feade1/5981c81cNc1b1fbef.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7003/250/1488538438/195825/53bf31ba/5981c57eN51e95176.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5665/100/8954482513/43454/418611a9/5981c57eNd5fc97ba.jpg!q70.jpg","itemtype":2,"pid":47,"price":111,"pscid":39,"salenum":757,"sellerid":3,"subhead":"碳黑色 32GB 全网通 官方标配  1件","title":"锤子 坚果Pro 特别版 巧克力色 酒红色 全网通 移动联通电信4G手机 双卡双待 碳黑色 32GB 全网通"},{"bargainPrice":3455,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/12224420750.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8803/356/1478945529/489755/2a163ace/59ba5e84N7bb9a666.jpg!q70.jpg","itemtype":1,"pid":48,"price":222,"pscid":39,"salenum":656,"sellerid":4,"subhead":"【现货新品抢购】全面屏2.0震撼来袭,骁龙835处理器,四曲面陶瓷机","title":"小米(MI) 小米MIX2 手机 黑色 全网通 (6GB+64GB)【标配版】"},{"bargainPrice":1999,"createtime":"2017-10-10T16:09:02","detailUrl":"https://item.m.jd.com/product/5025971.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t7210/232/3738666823/232298/9004583e/59c3a9a7N8de42e15.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8356/82/2107423621/109733/c019b8c6/59c3a9a6Ne9a4bdd7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t10219/74/25356012/171379/7d55e296/59c3a9a8N82fa6e02.jpg!q70.jpg","itemtype":0,"pid":49,"price":333,"pscid":39,"salenum":123,"sellerid":5,"subhead":"vivo X20 带你开启全面屏时代!逆光也清晰,照亮你的美!","title":"vivo X20 全面屏手机 全网通 4GB+64GB 金色 移动联通电信4G手机 双卡双待"},{"bargainPrice":3455,"createtime":"2017-10-14T21:48:08","detailUrl":"https://item.m.jd.com/product/12224420750.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8803/356/1478945529/489755/2a163ace/59ba5e84N7bb9a666.jpg!q70.jpg","itemtype":2,"pid":50,"price":444,"pscid":39,"salenum":54,"sellerid":6,"subhead":"【现货新品抢购】全面屏2.0震撼来袭,骁龙835处理器,四曲面陶瓷机","title":"小米(MI) 小米MIX2 手机 黑色 全网通 (6GB+64GB)【标配版】"},{"bargainPrice":3455,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/12224420750.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8803/356/1478945529/489755/2a163ace/59ba5e84N7bb9a666.jpg!q70.jpg","itemtype":1,"pid":51,"price":555,"pscid":39,"salenum":424,"sellerid":7,"subhead":"【现货新品抢购】全面屏2.0震撼来袭,骁龙835处理器,四曲面陶瓷机","title":"小米(MI) 小米MIX2 手机 黑色 全网通 (6GB+64GB)【标配版】"},{"bargainPrice":3455,"createtime":"2017-10-03T23:53:28","detailUrl":"https://item.m.jd.com/product/12224420750.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8803/356/1478945529/489755/2a163ace/59ba5e84N7bb9a666.jpg!q70.jpg","itemtype":0,"pid":52,"price":666,"pscid":39,"salenum":212,"sellerid":8,"subhead":"【现货新品抢购】全面屏2.0震撼来袭,骁龙835处理器,四曲面陶瓷机","title":"小米(MI) 小米MIX2 手机 黑色 全网通 (6GB+64GB)【标配版】"},{"bargainPrice":2999,"createtime":"2017-10-14T21:48:08","detailUrl":"https://item.m.jd.com/product/2385655.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t2068/298/2448145915/157953/7be197df/56d51a42Nd86f1c8e.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t2437/128/1687178395/117431/bcc190c1/56d3fcbaNb2963d21.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t2467/222/2263160610/95597/927b8a2f/56d3eafeNdecebeb6.jpg!q70.jpg","itemtype":2,"pid":53,"price":777,"pscid":39,"salenum":0,"sellerid":9,"subhead":"Super AMOLED三星双曲面2K 屏,支持无线充电!","title":"三星 Galaxy S7 edge(G9350)4GB+32GB 铂光金 移动联通电信4G手机 双卡双待"},{"bargainPrice":3455,"createtime":"2017-10-03T23:53:28","detailUrl":"https://item.m.jd.com/product/12224420750.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8803/356/1478945529/489755/2a163ace/59ba5e84N7bb9a666.jpg!q70.jpg","itemtype":0,"pid":54,"price":888,"pscid":39,"salenum":7575,"sellerid":10,"subhead":"【现货新品抢购】全面屏2.0震撼来袭,骁龙835处理器,四曲面陶瓷机","title":"小米(MI) 小米MIX2 手机 黑色 全网通 (6GB+64GB)【标配版】"}]

    * page : 1

    */

    publicStringmsg;

    publicStringcode;

    publicStringpage;

    publicListdata;

    public static classDataBean {

    /**

    * bargainPrice : 99.0

    * createtime : 2017-10-14T21:38:26

    * detailUrl : https://item.m.jd.com/product/4345173.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends

    * images : https://m.360buyimg.com/n0/jfs/t6037/35/2944615848/95178/6cd6cff0/594a3a10Na4ec7f39.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6607/258/1025744923/75738/da120a2d/594a3a12Ne3e6bc56.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6370/292/1057025420/64655/f87644e3/594a3a12N5b900606.jpg!q70.jpg

    * itemtype : 1

    * pid : 45

    * price : 2999.0

    * pscid : 39

    * salenum : 4666

    * sellerid : 1

    * subhead : 高清双摄,就是清晰!2000+1600万高清摄像头,6GB大内存+高通骁龙835处理器,性能怪兽!

    * title : 一加手机5 (A5000) 6GB+64GB 月岩灰 全网通 双卡双待 移动联通电信4G手机

    */

    public doublebargainPrice;

    publicStringcreatetime;

    publicStringdetailUrl;

    publicStringimages;

    public intitemtype;

    public intpid;

    public doubleprice;

    public intpscid;

    public intsalenum;

    public intsellerid;

    publicStringsubhead;

    publicStringtitle;

    }

    }

    deleteBean

    public classdeleteBean {

    /**

    * msg : 删除购物车成功

    * code : 0

    */

    publicStringmsg;

    publicStringcode;

    }

    queryBean

    public classqueryBean {

    privateStringmsg;

    privateStringcode;

    privateListdata;

    publicString getMsg() {

    returnmsg;

    }

    public voidsetMsg(String msg) {

    this.msg= msg;

    }

    publicString getCode() {

    returncode;

    }

    public voidsetCode(String code) {

    this.code= code;

    }

    publicList getData() {

    returndata;

    }

    public voidsetData(List data) {

    this.data= data;

    }

    public static classDataBean {

    privateStringsellerName;

    privateStringsellerid;

    privateListlist;

    publicString getSellerName() {

    returnsellerName;

    }

    public voidsetSellerName(String sellerName) {

    this.sellerName= sellerName;

    }

    publicString getSellerid() {

    returnsellerid;

    }

    public voidsetSellerid(String sellerid) {

    this.sellerid= sellerid;

    }

    publicList getList() {

    returnlist;

    }

    public voidsetList(List list) {

    this.list= list;

    }

    public static classListBean {

    private doublebargainPrice;

    privateStringcreatetime;

    privateStringdetailUrl;

    privateStringimages;

    private intnum;

    private intpid;

    private doubleprice;

    private intpscid;

    private intselected;

    private intsellerid;

    privateStringsubhead;

    privateStringtitle;

    private intisFirst=1;//1为显示商铺, 2为隐藏商铺

    private booleanitem_check;//每个商品的选中状态

    private booleanshop_check;//商店的选中状态

    public intgetIsFirst() {

    returnisFirst;

    }

    public voidsetIsFirst(intisFirst) {

    this.isFirst= isFirst;

    }

    public booleanisItem_check() {

    returnitem_check;

    }

    public voidsetItem_check(booleanitem_check) {

    this.item_check= item_check;

    }

    public booleanisShop_check() {

    returnshop_check;

    }

    public voidsetShop_check(booleanshop_check) {

    this.shop_check= shop_check;

    }

    public doublegetBargainPrice() {

    returnbargainPrice;

    }

    public voidsetBargainPrice(doublebargainPrice) {

    this.bargainPrice= bargainPrice;

    }

    publicString getCreatetime() {

    returncreatetime;

    }

    public voidsetCreatetime(String createtime) {

    this.createtime= createtime;

    }

    publicString getDetailUrl() {

    returndetailUrl;

    }

    public voidsetDetailUrl(String detailUrl) {

    this.detailUrl= detailUrl;

    }

    publicString getImages() {

    returnimages;

    }

    public voidsetImages(String images) {

    this.images= images;

    }

    public intgetNum() {

    returnnum;

    }

    public voidsetNum(intnum) {

    this.num= num;

    }

    public intgetPid() {

    returnpid;

    }

    public voidsetPid(intpid) {

    this.pid= pid;

    }

    public doublegetPrice() {

    returnprice;

    }

    public voidsetPrice(doubleprice) {

    this.price= price;

    }

    public intgetPscid() {

    returnpscid;

    }

    public voidsetPscid(intpscid) {

    this.pscid= pscid;

    }

    public intgetSelected() {

    returnselected;

    }

    public voidsetSelected(intselected) {

    this.selected= selected;

    }

    public intgetSellerid() {

    returnsellerid;

    }

    public voidsetSellerid(intsellerid) {

    this.sellerid= sellerid;

    }

    publicString getSubhead() {

    returnsubhead;

    }

    public voidsetSubhead(String subhead) {

    this.subhead= subhead;

    }

    publicString getTitle() {

    returntitle;

    }

    public voidsetTitle(String title) {

    this.title= title;

    }

    }

    }

    }

    deleteModel

    packagecom.example.shoppingcar.model;

    importcom.example.shoppingcar.bean.deleteBean;

    importcom.example.shoppingcar.utils.APIFactory;

    importjava.util.HashMap;

    importjava.util.Map;

    importrx.Observer;

    /**

    * date:2017/12/20

    * author:张伟(Administrator)

    * desc:

    */

    public classdeleteModel {

    public voiddelete(String pid,finaldeleteModelCallBack deleteBack) {

    Map map =newHashMap<>();

    map.put("uid","uid");

    map.put("pid", pid);

    APIFactory.getInstance().delete(map,newObserver() {

    @Override

    public voidonCompleted() {

    }

    @Override

    public voidonError(Throwable e) {

    }

    @Override

    public voidonNext(deleteBean deleteBean) {

    deleteBack.success(deleteBean);

    }

    });

    }

    }

    deleteModelCallBack

    public interfacedeleteModelCallBack {

    voidsuccess(deleteBean deleteBean);

    voidfailure();

    }

    ModelCallBack

    public interfaceModelCallBack {

    voidsuccess(CartBean cartBean);

    voidfailure(Exception e);

    }

    MyModel

    public classMyModel {

    public voidcart(finalModelCallBack modelCallBack) {

    Map map =newHashMap<>();

    map.put("keywords","手机");

    APIFactory.getInstance().cart(map,newObserver() {

    @Override

    public voidonCompleted() {

    }

    @Override

    public voidonError(Throwable e) {

    }

    @Override

    public voidonNext(CartBean cartBean) {

    modelCallBack.success(cartBean);

    }

    });

    }

    }

    queryModel

    public classqueryModel {

    public voidquery(finalqueryModelCallBack queryBack) {

    Map map =newHashMap<>();

    map.put("uid","4421");

    APIFactory.getInstance().query(map,newObserver() {

    @Override

    public voidonCompleted() {

    }

    @Override

    public voidonError(Throwable e) {

    }

    @Override

    public voidonNext(queryBean queryBean) {

    queryBack.success(queryBean);

    }

    });

    }

    }

    queryModelCallBack

    public interfacequeryModelCallBack {

    voidsuccess(queryBean queryBean);

    voidfailure();

    }

    cartPresenter


    public classcartPresenter {

    ViewCallBackviewCallBack;

    MyModelmyModel;

    publiccartPresenter(ViewCallBack viewCallBack) {

    this.viewCallBack= viewCallBack;

    this.myModel=newMyModel();

    }

    public voidcartFF() {

    myModel.cart(newModelCallBack() {

    @Override

    public voidsuccess(CartBean cartBean) {

    viewCallBack.success(cartBean);

    }

    @Override

    public voidfailure(Exception e) {

    }

    });

    }

    public voiddetach() {

    this.viewCallBack=null;

    }

    }

    deletePresenter

    public classdeletePresenter {

    deleteModeldeleteModel;

    deleteViewdeleteView;

    publicdeletePresenter(com.example.shoppingcar.view.deleteView deleteView) {

    this.deleteView= deleteView;

    this.deleteModel=newdeleteModel();

    }

    public voiddeleteFF(String pid) {

    deleteModel.delete(pid,newdeleteModelCallBack() {

    @Override

    public voidsuccess(deleteBean deleteBean) {

    deleteView.success(deleteBean);

    }

    @Override

    public voidfailure() {

    }

    });

    }

    }

    queryPresenter

    public classqueryPresenter {

    queryViewqueryView;

    queryModelqueryModel;

    publicqueryPresenter(queryView queryView) {

    this.queryView= queryView;

    this.queryModel=newqueryModel();

    }

    public voidqueryFF() {

    queryModel.query(newqueryModelCallBack() {

    @Override

    public voidsuccess(queryBean queryBean) {

    queryView.success(queryBean);

    }

    @Override

    public voidfailure() {

    }

    });

    }

    public voiddetach() {

    this.queryView=null;

    }

    }

    deleteView

    public interfacedeleteView {

    voidsuccess(deleteBean deleteBean);

    voidfailure();

    }

    queryView

    public interfacequeryView{

    voidsuccess(queryBean queryBean);

    voidfailure();

    }

    ViewCallBack


    public interfaceViewCallBack {

    voidsuccess(CartBean cartBean);

    voidfailure(Exception e);

    }


    购物车XML

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:padding="20dp">

    android:id="@+id/back"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_centerVertical="true"

    android:text="<"

    android:textSize="23sp"/>

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_centerHorizontal="true"

    android:text="购物车"

    android:textSize="23sp"

    android:textStyle="bold"/>

    android:id="@+id/bianji"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_alignParentRight="true"

    android:layout_centerVertical="true"

    android:text="编辑"

    android:textSize="20sp"/>

    android:layout_width="match_parent"

    android:layout_height="1dp"

    android:layout_marginTop="5dp"

    android:background="#D4D4D4"/>

    android:id="@+id/recycler_View"

    android:layout_width="match_parent"

    android:layout_height="0dp"

    android:layout_weight="1"/>

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:layout_alignParentBottom="true"

    android:gravity="center_vertical"

    android:orientation="horizontal">

    android:id="@+id/quanxuan"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_centerVertical="true"

    android:layout_marginLeft="10dp"

    android:background="@drawable/shopcart_unselected"

    android:button="@null"/>

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_centerVertical="true"

    android:layout_marginLeft="40dp"

    android:text="全选"

    android:textSize="23sp"

    android:textStyle="bold"/>

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_centerInParent="true"

    android:layout_centerVertical="true"

    android:layout_marginLeft="10dp"

    android:layout_marginRight="70dp"

    android:orientation="vertical">

    android:id="@+id/total_price"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="总价 : ¥0元"

    android:textColor="#e53e42"

    android:textSize="20sp"/>

    android:id="@+id/total_num"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_alignBottom="@+id/total_price"

    android:text="共0件商品"

    android:textSize="20sp"/>

    android:id="@+id/quzhifu"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_alignParentRight="true"

    android:layout_centerVertical="true"

    android:background="#FC7903"

    android:gravity="center"

    android:padding="30dp"

    android:text="去支付"

    android:textColor="#fff"

    android:textSize="22sp"/>

    android:id="@+id/linear_shanchu"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_alignParentRight="true"

    android:layout_marginLeft="30dp"

    android:orientation="horizontal"

    android:visibility="gone">

    android:layout_width="wrap_content"

    android:layout_height="match_parent"

    android:background="#FC7903"

    android:gravity="center"

    android:padding="20dp"

    android:paddingLeft="30dp"

    android:paddingRight="30dp"

    android:text="分享宝贝"

    android:textColor="#fff"

    android:textSize="20sp"/>

    android:layout_width="wrap_content"

    android:layout_height="match_parent"

    android:background="#FC7903"

    android:gravity="center"

    android:padding="20dp"

    android:paddingLeft="30dp"

    android:paddingRight="30dp"

    android:text="移到收藏夹"

    android:textColor="#fff"

    android:textSize="20sp"/>

    android:id="@+id/shanchu"

    android:layout_width="wrap_content"

    android:layout_height="match_parent"

    android:background="#DC143C"

    android:gravity="center"

    android:padding="30dp"

    android:paddingLeft="30dp"

    android:paddingRight="30dp"

    android:text="删除"

    android:textColor="#fff"

    android:textSize="20sp"/>

    详情XML

    android:id="@+id/GWC"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:gravity="center"

    android:text="点击进入"

    android:textSize="20sp"

    android:textStyle="bold"/>

    android:id="@+id/XQ_Recy"

    android:layout_width="match_parent"

    android:layout_height="match_parent">

    加减器XML

    android:background="#F2F1F1"

    android:textSize="20sp"

    android:id="@+id/reverse"

    android:text="一"

    android:layout_width="40dp"

    android:layout_height="40dp"/>

    android:gravity="center"

    android:background="#FAFAFA"

    android:textStyle="bold"

    android:textSize="23sp"

    android:layout_width="40dp"

    android:layout_height="40dp"

    android:text="1"

    android:id="@+id/count"

    />

    android:id="@+id/add"

    android:background="#F2F1F1"

    android:textSize="25sp"

    android:text="+"

    android:layout_width="40dp"

    android:layout_height="40dp"/>

    购物车Item

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:background="#FFFFFF"

    android:padding="5dp">

    android:id="@+id/shop_checkbox"

    android:layout_width="50dp"

    android:layout_height="50dp"

    android:layout_centerVertical="true"/>

    android:id="@+id/shop_name"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_centerVertical="true"

    android:layout_marginLeft="35dp"

    android:text="良品铺子"

    android:textSize="23sp"

    android:textStyle="bold"/>

    android:id="@+id/item_bianji"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_alignParentRight="true"

    android:layout_centerVertical="true"

    android:text="编辑"

    android:textSize="20sp"/>

    android:layout_width="match_parent"

    android:layout_height="1dp"

    android:background="#D4D4D4"/>

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:background="#F2F2F2"

    android:gravity="center_vertical"

    android:orientation="horizontal">

    android:id="@+id/item_checkbox"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"/>

    android:id="@+id/item_face"

    android:layout_width="140dp"

    android:layout_height="140dp"

    android:src="@mipmap/ic_launcher"

    fresco:failureImage="@mipmap/ic_launcher"

    fresco:placeholderImage="@mipmap/ic_launcher"/>

    android:layout_width="0dp"

    android:layout_height="wrap_content"

    android:layout_marginLeft="10dp"

    android:layout_weight="1"

    android:orientation="vertical">

    android:id="@+id/item_name"

    android:layout_width="wrap_content"

    android:layout_height="0dp"

    android:layout_weight="1"

    android:text="三只松鼠"

    android:textSize="20sp"/>

    android:id="@+id/item_price"

    android:layout_width="wrap_content"

    android:layout_height="0dp"

    android:layout_weight="1"

    android:text="299"

    android:textColor="#f00"

    android:textSize="23sp"/>

    android:id="@+id/custom_jiajian"

    android:layout_width="wrap_content"

    android:layout_height="0dp"

    android:layout_weight="1"

    android:visibility="gone"/>

    android:id="@+id/item_yansechima"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="颜色 : 黑色 ; 尺码: 29"

    android:textSize="20sp"

    android:visibility="gone"/>

    android:visibility="gone"

    android:id="@+id/item_delete"

    android:layout_marginRight="10dp"

    android:src="@drawable/shopcart_delete"

    android:layout_width="30dp"

    android:layout_height="30dp" />-->

    android:id="@+id/item_delete"

    android:layout_width="wrap_content"

    android:layout_height="match_parent"

    android:background="#FC7903"

    android:gravity="center"

    android:padding="20dp"

    android:text="删除"

    android:textColor="#fff"

    android:textSize="23sp"

    android:visibility="gone"/>

    android:layout_width="match_parent"

    android:layout_height="1dp"

    android:background="#D4D4D4"/>

    详情XML

    android:layout_width="match_parent"

    android:layout_height="160dp"

    android:orientation="horizontal">

    android:id="@+id/xq_fresco"

    android:layout_width="200dp"

    android:layout_height="160dp"

    android:src="@mipmap/ic_launcher"

    fresco:failureImage="@mipmap/ic_launcher"

    fresco:placeholderImage="@mipmap/ic_launcher"/>

    android:layout_width="match_parent"

    android:layout_height="160dp"

    android:orientation="vertical">

    android:id="@+id/xq_name"

    android:layout_width="match_parent"

    android:layout_height="0dp"

    android:layout_weight="1"

    android:gravity="center"/>

    android:id="@+id/xq_price"

    android:layout_width="match_parent"

    android:layout_height="0dp"

    android:layout_weight="1"

    android:gravity="center"/>

    android:id="@+id/xq_btn"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:gravity="center"

    android:text="加入购物车"/>

    相关文章

      网友评论

          本文标题:购物车

          本文链接:https://www.haomeiwen.com/subject/zimnwxtx.html