Eventbus-Rxjava购物车

   compile 'com.squareup.retrofit2:retrofit:2.3.0'
    compile 'com.squareup.retrofit2:converter-gson:2.3.0'
    compile 'io.reactivex.rxjava2:rxjava:2.1.7'
    compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'com.facebook.fresco:fresco:1.5.0'
    compile 'org.greenrobot:eventbus:3.1.1'
    compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.4-4'
    compile 'com.dou361.ijkplayer:jjdxm-ijkplayer:1.0.6'

eventbus包下
 
public class Datas {
 
     private String pid;
     private String sellerid;
     private int selected;
     private String num;
 
     public String getPid() {
         return pid;
     }
 
     public void setPid(String pid) {
         this.pid = pid;
     }
 
     public String getSellerid() {
         return sellerid;
     }
 
     public void setSellerid(String sellerid) {
         this.sellerid = sellerid;
     }
 
     public int getSelected() {
         return selected;
     }
 
     public void setSelected(int selected) {
         this.selected = selected;
     }
 
     public String getNum() {
         return num;
     }
 
     public void setNum(String num) {
         this.num = num;
     }
}
 
 
======
public class MessageEvent {
     private boolean checked;
 
     public boolean isChecked() {
         return checked;
     }
 
     public void setChecked(boolean checked) {
         this.checked = checked;
     }
}
 
 
=====
public class PriceAndCountEvent {
     private int price;
     private int count;
 
     public int getPrice() {
         return price;
     }
 
     public void setPrice(int price) {
         this.price = price;
     }
 
     public int getCount() {
         return count;
     }
 
     public void setCount(int count) {
         this.count = count;
     }
}

M层
public class GetCardModel implements IGetCardModel {
     @Override
     public void getCard( String uid, final OnListiner onListiner) {
         Flowable< CartBean > cart = RetrofitHelper.getApi().getCart(uid);
         cart.doOnSubscribe(new Consumer< Subscription >() {
             @Override
             public void accept(Subscription subscription) throws Exception {
                 Log.d("ssss","开始请求数据");
             }
         }).subscribeOn(Schedulers.io())
           .observeOn(AndroidSchedulers.mainThread())
           .subscribe(new Consumer< CartBean >() {
               @Override
               public void accept(CartBean cartBean) throws Exception {
                   onListiner.onSuccess(cartBean);
               }
           })  ;
     }
}
 
 
 
public interface IGetCardModel< T > {
     public void getCard(String uid, OnListiner onListiner);
}

   P层
public class GetCardPresenter {
     private ICartFragment iCartFragment;
     private IGetCardModel iGetCardModel;
 
     public GetCardPresenter(ICartFragment iCartFragment) {
         this.iCartFragment = iCartFragment;
         iGetCardModel = new GetCardModel();
     }
 
     public void getCarts() {
         iGetCardModel.getCard("71", new OnListiner() {
             @Override
             public void onSuccess(Object o) {
                 iCartFragment.onShow((CartBean) o);
             }
 
             @Override
             public void onFailure(Throwable t) {
                 t.getMessage();
             }
         });
     }
}
    V层

  
public class MainActivity extends AppCompatActivity implements View.OnClickListener,ICartFragment {
     private GetCardPresenter presenter;
     private MyAdapter adapter;
     private View view;
     /**
      * c
      */
     private TextView mFan;
     /**
      * 编辑
      */
     private TextView mBj;
     private ExpandableListView mElv;
     /**
      * 全选
      */
     private CheckBox mCheckAll;
     /**
      * 分享宝贝
      */
     private Button mShare;
     /**
      * 移到收藏栏
      */
     private Button mFile;
     /**
      * 删除
      */
     private Button mDele;
     private LinearLayout mCaozuo;
     /**
      * 价钱
      */
     private TextView mPriceAll;
     /**
      * 结算
      */
     private Button mJs;
     private RelativeLayout mJiesuan;
     private   List< List <CartBean.DataBean.ListBean>> lists = new ArrayList<>();
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         initView();
         EventBus.getDefault().register(this);
         presenter = new GetCardPresenter(this);
         presenter.getCarts();
         mCaozuo.setVisibility(View.GONE);
     }
 
     @Override
     public void onShow(CartBean cartBean) {
        Toast.makeText(getApplicationContext(),cartBean.getCode(), Toast.LENGTH_SHORT).show();
         List< CartBean.DataBean > data = cartBean.getData();
 
         for (int i = 0; i <  data.size (); i++) {
             data.get(i).setBj("编辑");
             data.get(i).setWc("完成");
             List<CartBean.DataBean.ListBean> list = data.get(i).getList();
             lists.add(list);
         }
       adapter = new MyAdapter(this, data, lists);
         mElv.setAdapter(adapter);
         for (int i=0; i<data.size(); i++)
         {
             mElv.expandGroup(i);
         }
     }
 
     private void initView() {
         mFan = (TextView) findViewById(R.id.fan);
         mBj = (TextView) findViewById(R.id.bj);
         mElv = (ExpandableListView) findViewById(R.id.elv);
         mCheckAll = (CheckBox) findViewById(R.id.check_all);
         mShare = (Button) findViewById(R.id.share);
         mShare.setOnClickListener(this);
         mFile = (Button) findViewById(R.id.file);
         mFile.setOnClickListener(this);
         mDele = (Button) findViewById(R.id.dele);
         mDele.setOnClickListener(this);
         mCaozuo = (LinearLayout) findViewById(R.id.caozuo);
         mPriceAll = (TextView) findViewById(R.id.price_all);
         mJs = (Button) findViewById(R.id.js);
         mJs.setOnClickListener(this);
         mJiesuan = (RelativeLayout) findViewById(R.id.jiesuan);
         mCheckAll.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
                 //changeAllListCbState
                 adapter.changeAllListCbState(mCheckAll.isChecked());
             }
         });
     }
 
     @Override
     public void onClick(View v) {
         switch (v.getId()) {
             default:
                 break;
             case R.id.share:
                 break;
             case R.id.file:
                 break;
             case R.id.dele:
                 break;
             case R.id.js:
                 break;
         }
     }
     @Subscribe
     public void onMessageEvent(MessageEvent event) {
         mCheckAll.setChecked(event.isChecked());
     }
 
     @Subscribe
     public void onMessageEvent(PriceAndCountEvent event) {
         mPriceAll.setText("结算(" + event.getCount() + ")"+event.getPrice() + "");
     }
     @Override
     public void onDestroy() {
         super.onDestroy();
         EventBus.getDefault().unregister(this);
     }
 
 
}
 
 
 
 
 
 
public interface ICartFragment {
   public void onShow(CartBean cartBean);
 
}


 


XML

 

<? xml  version="1.0" encoding="utf-8"?>
< LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:context="com.bwei.wsq.gwuche.MainActivity"
     android:orientation="vertical">
 
     < RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="50dp"
         android:background="#f70828"
         >
         < TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="c"
             android:textSize="26sp"
             android:layout_centerVertical="true"
             android:layout_marginLeft="10dp"
             android:id="@+id/fan"
             />
         < TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="购物车"
             android:layout_centerInParent="true"
             />
         < TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="编辑"
             android:id="@+id/bj"
             android:layout_centerInParent="true"
             android:layout_alignParentRight="true"
             android:layout_marginRight="10dp"
             />
     </ RelativeLayout >
     < ExpandableListView
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:id="@+id/elv"
         android:layout_weight="2"
         ></ ExpandableListView >
     < RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_weight="8"
         >
         < CheckBox
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="全选"
             android:id="@+id/check_all"
             android:layout_centerVertical="true"
             />
         < LinearLayout
             android:layout_width="300dp"
             android:layout_height="wrap_content"
             android:layout_alignParentRight="true"
             android:layout_centerVertical="true"
             android:orientation="horizontal"
             android:id="@+id/caozuo"
             >
             < Button
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:id="@+id/share"
                 android:background="#ed1ad8"
                 android:textColor="#ffffff"
                 android:text="分享宝贝"
                 android:layout_margin="5dp"
                 />
             < Button
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:id="@+id/file"
                 android:background="#ed1ad8"
                 android:textColor="#ffffff"
                 android:text="移到收藏栏"
                 android:layout_margin="5dp"
 
 
                 />
             < Button
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:id="@+id/dele"
                 android:background="#f40616"
                 android:textColor="#ffffff"
                 android:text="删除"
                 android:layout_margin="5dp"
                 />
         </ LinearLayout >
         < RelativeLayout
             android:layout_width="300dp"
             android:layout_height="wrap_content"
             android:layout_alignParentRight="true"
             android:id="@+id/jiesuan"
             android:layout_centerVertical="true"
             >
             < TextView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:id="@+id/price_all"
                 android:layout_marginLeft="100dp"
                 android:text="价钱"
                 android:layout_centerVertical="true"
 
                 />
             < Button
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:id="@+id/js"
                 android:text="结算"
                 android:layout_margin="5dp"
                 android:background="#f40820"
                 android:textColor="#ffffff"
                 android:layout_alignParentRight="true"
                 />
         </ RelativeLayout >
 
     </ RelativeLayout >
 
</ LinearLayout >



child_item
 
<? xml  version="1.0" encoding="utf-8"?>
< LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:orientation="horizontal"
     >
< CheckBox
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:id="@+id/sel"
     android:layout_gravity="center_vertical"
     />
     < com.facebook.drawee.view.SimpleDraweeView
         android:layout_width="150dp"
         android:layout_height="150dp"
         android:id="@+id/img"
         />
     < RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
 
         >
         < LinearLayout
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:orientation="vertical"
             android:id="@+id/show"
             >
         < TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/name"
             />
         < TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/jie_shao"
             />
         < LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:orientation="horizontal"
             >
             < TextView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:id="@+id/price"
                 android:textColor="#edb519"
                 />
             < TextView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:id="@+id/prices"
                 android:layout_marginLeft="20dp"
                 />
             < TextView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:id="@+id/num"
                 android:layout_marginLeft="20dp"
                 />
 
 
         </ LinearLayout >
         </ LinearLayout >
         < RelativeLayout
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:id="@+id/hide"
             >
             < LinearLayout
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:orientation="horizontal"
                 android:layout_centerVertical="true"
                 >
                 < TextView
                     android:layout_width="20dp"
                     android:layout_height="20dp"
                     android:id="@+id/end"
                     android:text="-"
                     android:background="#bac2ec"
                     android:gravity="center"
                     />
                 < TextView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:id="@+id/num01"
                     android:text="111"
                     />
                 < TextView
                     android:layout_width="20dp"
                     android:layout_height="20dp"
                     android:id="@+id/add"
                     android:text="+"
                     android:gravity="center"
                     android:background="#bac2ec"
                     />
             </ LinearLayout >
 
 
             < Button
                 android:layout_width="wrap_content"
                 android:layout_height="match_parent"
                 android:id="@+id/del"
                 android:background="#f70d24"
                 android:layout_alignParentRight="true"
                 android:text="删除"
                 android:textColor="#ffffff"
                 />
         </ RelativeLayout >
     </ RelativeLayout >
 
 
 
</ LinearLayout >
 
 
group_item
 
 
<? xml  version="1.0" encoding="utf-8"?>
< RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
< CheckBox
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:id="@+id/shop_name"
     android:layout_centerVertical="true"
     />
     < TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:id="@+id/item_bj"
         android:text="编辑"
         android:layout_alignParentRight="true"
         android:layout_centerVertical="true"
         android:layout_marginRight="20dp"
         />
</ RelativeLayout >

  

 Myadapter

  

public class MyAdapter extends BaseExpandableListAdapter {
     private Context context;
     private List< CartBean.DataBean > groupList;
     private List< List <CartBean.DataBean.ListBean>> childList;
     private LayoutInflater inflater;
 
     private AlertDialog show;
     private Boolean i01 = false;
 
     public MyAdapter(Context context, List< CartBean.DataBean > groupList, List< List <CartBean.DataBean.ListBean>> childList) {
         this.context = context;
         this.groupList = groupList;
         this.childList = childList;
         inflater = LayoutInflater.from(context);
     }
 
     @Override
     public int getGroupCount() {
         return groupList.size();
     }
 
     @Override
     public int getChildrenCount(int groupPosition) {
         return childList.get(groupPosition).size();
     }
 
     @Override
     public Object getGroup(int groupPosition) {
         return groupList.get(groupPosition);
     }
 
     @Override
     public Object getChild(int groupPosition, int childPosition) {
         return childList.get(groupPosition).get(childPosition);
     }
 
     @Override
     public long getGroupId(int groupPosition) {
         return groupPosition;
     }
 
     @Override
     public long getChildId(int groupPosition, int childPosition) {
         return childPosition;
     }
 
     @Override
     public boolean hasStableIds() {
         return true;
     }
 
     @Override
     public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
         final GroupViewHolder holder1;
         View view = null;
         if(convertView == null)
         {
             holder1 = new GroupViewHolder();
             view = inflater.inflate(R.layout.group_item, parent, false);
             holder1.shopName = view.findViewById(R.id.shop_name);
             holder1.itemBj = view.findViewById(R.id.item_bj);
             view.setTag(holder1);
         }
         else {
             view = convertView;
             holder1 = (GroupViewHolder) view.getTag();
         }
         final CartBean.DataBean dataBean = groupList.get(groupPosition);
         holder1.shopName.setText(dataBean.getSellerName());
         Boolean check = dataBean.getCheck();
         holder1.shopName.setChecked(dataBean.getCheck());
         holder1.itemBj.setText(dataBean.getBj());
 
         holder1.itemBj.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
               //  List< CartBean.DataBean.ListBean > listBeans = childList.get(groupPosition);
                 List< CartBean.DataBean.ListBean > list = dataBean.getList();
                 if(i01==false)
                 {   i01=true;
                    dataBean.setBj("完成");
                     for(int i = 0;i< list.size ();i++)
                     {
                         list.get(i).setShow(false);
 
                     }
                     notifyDataSetChanged();
                 }
                 else {
                     i01=false;
                     dataBean.setBj("编辑");
                     for(int i = 0;i<list.size();i++)
                     {
                         list.get(i).setShow(true);
 
                     }
                     notifyDataSetChanged();
                 }
 
                notifyDataSetChanged();
             }
         });
         holder1.shopName.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
                 dataBean.setCheck(holder1.shopName.isChecked());
                 changeChildCbState(groupPosition, holder1.shopName.isChecked());
                 EventBus.getDefault().post(compute());
                 changeAllCbState(isAllGroupCbSelected());
                 notifyDataSetChanged();
             }
         });
         return view;
     }
 
     @Override
     public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
         final ChildViewHolder holder;
         View view = null;
         if(convertView == null)
         {
             holder = new ChildViewHolder();
             view = inflater.inflate(R.layout.child_item, parent, false);
             holder.dele = view.findViewById(R.id.del);
             holder.add = view.findViewById(R.id.add);
             holder.end = view.findViewById(R.id.end);
             holder.sel = view.findViewById(R.id.sel);
             holder.img = view.findViewById(R.id.img);
             holder.name = view.findViewById(R.id.name);
             holder.price = view.findViewById(R.id.price);
             holder.prices = view.findViewById(R.id.prices);
             holder.jieShao = view.findViewById(R.id.jie_shao);
             holder.num = view.findViewById(R.id.num);
             holder.show = view.findViewById(R.id.show);
             holder.hide = view.findViewById(R.id.hide);
             holder.num01 = view.findViewById(R.id.num01);
             view.setTag(holder);
         }
         else {
             view = convertView;
             holder = (ChildViewHolder) view.getTag();
         }
         final CartBean.DataBean.ListBean listBean = childList.get(groupPosition).get(childPosition);
         holder.hide.setVisibility(View.GONE);
         holder.jieShao.setText(listBean.getSubhead());
         holder.num.setText("数量:"+listBean.getNum());
         holder.num01.setText(listBean.getNum()+"");
         holder.price.setText("$"+listBean.getPrice());
         holder.prices.setText("$"+listBean.getBargainPrice());
         holder.sel.setChecked(listBean.getCheck());
         String images = listBean.getImages();
         String[] split = images.split("\\|");
         Uri parse = Uri.parse(split[0]);
         holder.img.setImageURI(parse);
         holder.name.setText(listBean.getTitle());
         int pid = listBean.getPid();
         final String pid01  = pid+"";
         final int selected = listBean.getSelected();
         final String sellerid = listBean.getSellerid()+"";
         final String num = listBean.getNum()+"";
         if(listBean.getShow()==false)
         {
             holder.hide.setVisibility(View.VISIBLE);
             holder.show.setVisibility(View.GONE);
         }
         else{
             holder.hide.setVisibility(View.GONE);
             holder.show.setVisibility(View.VISIBLE);
         }
         holder.sel.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
                 //设置该条目对象里的checked属性值
                 listBean.setCheck(holder.sel.isChecked());
                 PriceAndCountEvent priceAndCountEvent = compute();
                 EventBus.getDefault().post(priceAndCountEvent);
 
                 if (holder.sel.isChecked()) {
                     //当前checkbox是选中状态
                     if (isAllChildCbSelected(groupPosition)) {
                         changGroupCbState(groupPosition, true);
                         changeAllCbState(isAllGroupCbSelected());
                     }
                 } else {
                     changGroupCbState(groupPosition, false);
                     changeAllCbState(isAllGroupCbSelected());
                 }
                 notifyDataSetChanged();
             }
         });
         //加号
         holder.add.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 int num1 = listBean.getNum();
                 num1++;
                 holder.num01.setText(num1 + "");
                 holder.num.setText(num1+"");
                 listBean.setNum(num1);
                 if (holder.sel.isChecked()) {
                     PriceAndCountEvent priceAndCountEvent = compute();
                     EventBus.getDefault().post(priceAndCountEvent);
                 }
             }
         });
         //减号
         holder.end.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 int num = listBean.getNum();
                 if (num == 1) {
                     return;
                 }
                 holder.num01.setText(--num + "");
                 holder.num.setText(num+"");
                 listBean.setNum(num);
                 if (holder.sel.isChecked()) {
                     PriceAndCountEvent priceAndCountEvent = compute();
                     EventBus.getDefault().post(priceAndCountEvent);
                 }
             }
         });
         //删除
         holder.dele.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
 
 
                 final AlertDialog.Builder normalDialog =
                         new AlertDialog.Builder(context);
                 normalDialog.setIcon(R.drawable.selectheart);
                 normalDialog.setTitle("确认要删除此商品吗");
                 normalDialog.setPositiveButton("确定",
                         new DialogInterface.OnClickListener() {
                             @Override
                             public void onClick(DialogInterface dialog, int which) {
                                 //...To-do
                                 RetrofitHelper.getApi().deleteGoodCar("71", childList.get(groupPosition).get(childPosition).getPid() + "")
                                 .subscribeOn(Schedulers.io())
                                         .observeOn(AndroidSchedulers.mainThread())
                                         .subscribe(new Observer<BaseBean>() {
                                             @Override
                                             public void onSubscribe(Disposable d) {
 
                                             }
 
                                             @Override
                                             public void onNext(BaseBean baseBean) {
                                                 if (baseBean.getCode().equals("0")){
                                                     List< CartBean.DataBean.ListBean > datasBeen = childList.get(groupPosition);
                                                     CartBean.DataBean.ListBean remove = datasBeen.remove(childPosition);
                                                     if (datasBeen.size() == 0) {
                                                         childList.remove(groupPosition);
                                                         groupList.remove(groupPosition);
                                                     }
                                                     EventBus.getDefault().post(compute());
                                                     notifyDataSetChanged();
                                                 }else{
                                                     Toast.makeText(context,"删除失败",Toast.LENGTH_SHORT).show();
                                                 }
                                             }
 
                                             @Override
                                             public void onError(Throwable e) {
 
                                             }
 
                                             @Override
                                             public void onComplete() {
 
                                             }
                                         });
 
                             }
                         });
                 normalDialog.setNegativeButton("关闭",
                         new DialogInterface.OnClickListener() {
                             @Override
                             public void onClick(DialogInterface dialog, int which) {
                                 //...To-do
                                 show.dismiss();
                             }
                         });
                 // 显示
                 show = normalDialog.show();
 
             }
         });
         notifyDataSetChanged();
//
         return view;
     }
 
     @Override
     public boolean isChildSelectable(int groupPosition, int childPosition) {
         return true;
     }
     class GroupViewHolder{
         CheckBox shopName;
         TextView itemBj;
 
     }
     class ChildViewHolder{
         CheckBox sel;
         SimpleDraweeView img;
         TextView name;
         TextView jieShao;
         TextView price;
         TextView prices;
         TextView num;
         TextView num01;
         Button dele;
         TextView add;
         TextView end;
         LinearLayout show;
         RelativeLayout hide;
 
 
     }
     /**
      * 计算列表中,选中的钱和数量
      */
     private PriceAndCountEvent compute() {
         int count = 0;
         int price = 0;
         for (int i = 0; i <  childList.size (); i++) {
             List<CartBean.DataBean.ListBean> listBeans = childList.get(i);
             for (int j = 0; j <  listBeans.size (); j++) {
                 CartBean.DataBean.ListBean listBean = listBeans.get(j);
                 if (listBean.getCheck()) {
                     price += listBean.getNum() * listBean.getPrice();
                     count += listBean.getNum();
                 }
             }
         }
         PriceAndCountEvent priceAndCountEvent = new PriceAndCountEvent();
         priceAndCountEvent.setCount(count);
         priceAndCountEvent.setPrice(price);
         return priceAndCountEvent;
     }
     /**
      * 设置全选、反选
      *
      * @param flag
      */
     public void changeAllListCbState(boolean flag) {
         for (int i = 0; i < groupList.size(); i++) {
             changGroupCbState(i, flag);
             changeChildCbState(i, flag);
         }
         EventBus.getDefault().post(compute());
         notifyDataSetChanged();
     }
     /**
      * 判断一级列表是否全部选中
      *
      * @return
      */
     private boolean isAllGroupCbSelected() {
         for (int i = 0; i < groupList.size(); i++) {
             CartBean.DataBean dataBean = groupList.get(i);
             if (!dataBean.getCheck()) {
                 return false;
             }
         }
         return true;
     }
 
     /**
      * 判断二级列表是否全部选中
      *
      * @param groupPosition
      * @return
      */
     private boolean isAllChildCbSelected(int groupPosition) {
         List<CartBean.DataBean.ListBean> listBeans = childList.get(groupPosition);
         for (int i = 0; i <  listBeans.size (); i++) {
             CartBean.DataBean.ListBean listBean = listBeans.get(i);
             if (!listBean.getCheck()) {
                 return false;
             }
         }
         return true;
     }
     /**
      * 改变全选的状态
      *
      * @param flag
      */
     private void changeAllCbState(boolean flag) {
         MessageEvent messageEvent = new MessageEvent();
         messageEvent.setChecked(flag);
         EventBus.getDefault().post(messageEvent);
     }
 
     /**
      * 改变一级列表checkbox状态
      *
      * @param groupPosition
      */
     private void changGroupCbState(int groupPosition, boolean flag) {
         CartBean.DataBean dataBean = groupList.get(groupPosition);
         dataBean.setCheck(flag);
     }
 
     /**
      * 改变二级列表checkbox状态
      *
      * @param groupPosition
      * @param flag
      */
     private void changeChildCbState(int groupPosition, boolean flag) {
         List<CartBean.DataBean.ListBean> listBeans = childList.get(groupPosition);
         for (int i = 0; i < listBeans.size(); i++) {
             CartBean.DataBean.ListBean listBean = listBeans.get(i);
             listBean.setCheck(flag);
         }
     }
}



UrlUtils
 
public class UrlUtils {
     public static final String BASE_URL="https://www.zhaoapi.cn/";
     //查询购物车
     public static final String SELECTCAR_PATH_URL = "product/getCarts";
     //删除购物车(新增)
     public static final String DELETECAR_PATH_URL = "product/deleteCart";
}
 
 
ServiceApi
 
public interface ServiceApi {
    //查询购物车
    @GET(UrlUtils.SELECTCAR_PATH_URL)
    public Flowable< CartBean > getCart(@Query("uid") String uid);
 
    //删除购物车
    @GET(UrlUtils.DELETECAR_PATH_URL)
    Observable< BaseBean > deleteGoodCar(@Query("uid") String uid, @Query("pid") String pid);
}
 
 
 
RetrofitHelper
 
public class RetrofitHelper {
     private static OkHttpClient client;
     private static ServiceApi api;
     static {
         initOkHttp();
     }
 
     private static void initOkHttp() {
         if (client == null) {
             synchronized (OkHttpClient.class) {
                 if (client == null) {
                     client = new OkHttpClient.Builder()
                             .addInterceptor(new MyInterceptor())
                             .build();
                 }
             }
         }
     }
 
     public static ServiceApi getApi() {
         if (api == null) {
             synchronized (ServiceApi.class) {
                 if (api == null) {
                     api = RetrofitHelper.create(ServiceApi.class, UrlUtils.BASE_URL);
                 }
             }
         }
         return api;
     }
 
     private static < T > T create(Class< T > tClass, String baseUrl) {
         Retrofit re = new Retrofit.Builder()
                 .client(client)
                 .baseUrl(baseUrl)
                 .addConverterFactory(GsonConverterFactory.create())
                 .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                 .build();
         return re.create(tClass);
     }
}
 
OnListiner
 
public interface OnListiner< T > {
     public void onSuccess(T t);
     public void onFailure(Throwable throwable);
 
}
 
 
 
MyInterceptor
 
public class MyInterceptor implements Interceptor {
     private String newUri;
     @Override
     public Response intercept(Chain chain) throws IOException {
         Request request = chain.request();
         URI uri = request.url().uri();
         String query = uri.getQuery();
 
         String host = uri.getHost();
         String path = uri.getPath();
         if (query == null){
             newUri = "https://"+host + path +"?source=android";
         }else{
             newUri = "https://"+host + path +"?"+query+"&source=android";
         }
 
         Log.e("tag",newUri);
         Request request1 = request.newBuilder().url(newUri).build();
         Response response = chain.proceed(request1);
 
         return response;
     }
}


 

bean类
BaseBean
public class BaseBean {
 
     /**
      * msg : 删除购物车成功
      * code : 0
      */
 
 
 
     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;
     }
}
 
 
 
 
CartBean
 
public class CartBean {
 
 
     /**
      * msg : 请求成功
      * code : 0
      * data : [{"list":[{"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","num":7,"pid":1,"price":118,"pscid":1,"selected":0,"sellerid":17,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}],"sellerName":"商家17","sellerid":"17"},{"list":[{"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","num":1,"pid":2,"price":299,"pscid":1,"selected":0,"sellerid":18,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}],"sellerName":"商家18","sellerid":"18"},{"list":[{"bargainPrice":111.99,"createtime":"2017-10-03T23:53:28","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","num":1,"pid":3,"price":198,"pscid":1,"selected":0,"sellerid":19,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}],"sellerName":"商家19","sellerid":"19"}]
      */
 
     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 {
         /**
          * list : [{"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","num":7,"pid":1,"price":118,"pscid":1,"selected":0,"sellerid":17,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}]
          * sellerName : 商家17
          * sellerid : 17
          */
 
         private String sellerName;
         private String sellerid;
         private List< ListBean > list;
         private String bj="编辑01";
         private Boolean check = false;
         private String wc="完成";
 
         public String getWc() {
 
             return wc;
         }
 
         public void setWc(String wc) {
             this.wc = wc;
         }
 
         public Boolean getCheck() {
             return check;
         }
 
         public void setCheck(Boolean check) {
             this.check = check;
         }
 
         public String getBj() {
             return bj;
         }
 
         public void setBj(String bj) {
             this.bj = bj;
         }
         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 {
             /**
              * bargainPrice : 111.99
              * createtime : 2017-10-14T21:39:05
              * detailUrl : https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends
              * images : https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg
              * num : 7
              * pid : 1
              * price : 118.0
              * pscid : 1
              * selected : 0
              * sellerid : 17
              * subhead : 每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下
              * title : 北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g
              */
 
             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;
             private Boolean isShow=true;
             private Boolean check = false;
 
             public Boolean getCheck() {
                 return check;
             }
 
             public void setCheck(Boolean check) {
                 this.check = check;
             }
 
             public Boolean getShow() {
                 return isShow;
             }
 
             public void setShow(Boolean show) {
                 isShow = show;
             }
 
             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;
             }
         }
     }
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值