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

  

posted @ 2017-12-27 20:13  小马哥(马云)  阅读(323)  评论(0编辑  收藏  举报