二级列表购物车!!复制可用C+V

首先是主页面布局


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <RelativeLayout
        android:id="@+id/cart_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="购物车"
            android:textSize="30sp"
            android:textStyle="bold"
            android:layout_alignParentLeft="true"
            />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/btn_redact"
            android:layout_alignParentRight="true"
            android:text="编辑"
            android:textSize="30sp"
            android:textStyle="bold"
            />
    </RelativeLayout>

    <!--<android.support.v7.widget.RecyclerView-->
        <!--android:layout_below="@+id/cart_title"-->
        <!--android:layout_width="match_parent"-->
        <!--android:layout_height="match_parent"-->
        <!--android:layout_above="@+id/redactlayout"-->
        <!--android:id="@+id/cart_recycler">-->
    <!--</android.support.v7.widget.RecyclerView>-->

    <ExpandableListView
        android:layout_below="@+id/cart_title"
        android:id="@+id/expand_able_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

    <LinearLayout
        android:layout_alignParentBottom="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/redactlayout"
        android:orientation="horizontal">
        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/checkall"
            android:text="全选"
            />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/goods_money"
            android:text="0"
            />

    </LinearLayout>

</RelativeLayout>

其次是组的布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <CheckBox
        android:focusable="false"
        android:id="@+id/group_check"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
 
子的布局
 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <CheckBox
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_gravity="center"
        android:gravity="center"
        android:id="@+id/mycheck"
        android:layout_marginLeft="10dp"
        />

    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/cart_goods_head"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_marginTop="15dp"
        fresco:actualImageScaleType="centerCrop"
        fresco:placeholderImage="@drawable/icon_placeholder"
        fresco:placeholderImageScaleType="fitCenter"
        fresco:roundingBorderWidth="5dp"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/id_num"
        android:layout_margin="10dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_gravity="center"
        android:gravity="center"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/cart_goods_name"
            android:text="名字"
            android:layout_gravity="center"
            android:gravity="center"
            android:textSize="18sp"
            android:textStyle="bold"
            />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            >
            <Button
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:text="——"
                android:id="@+id/btn_reducegoodsnum"
                />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/cart_goods_num"
                android:text="1"
                />
            <Button
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:text="+"
                android:id="@+id/btn_addgoodsnum"
                />

            <Button
                android:layout_marginLeft="10dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/btn_deletegoods"
                android:text="删除"
                />
        </LinearLayout>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/cart_goods_price"
            android:text="$1000"
            android:textSize="18sp"
            android:textStyle="bold"
            />
    </LinearLayout>
</LinearLayout>

主页面逻辑代码


public class Fragment_cart extends Fragment implements ICartView {

    View view;

    CartPresenter userpresenter;

    //RecyclerView recyclerView;
    ArrayList<GetCartBean.DataBean> mlist;

    //MyCartRecyclerAdapter adapter;
    Button btn_redact;
    LinearLayout redactlayout;
    CheckBox checkall;
    boolean isgone = false;
    boolean ischeckall = false;
    ExpandableListView expandableListView;
    MyExpandAdapter adapter;

    TextView money;


    String user_id;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        view = inflater.inflate(R.layout.item_cart,null);

        btn_redact = view.findViewById(R.id.btn_redact);
        redactlayout = view.findViewById(R.id.redactlayout);
        expandableListView = view.findViewById(R.id.expand_able_view);

        money = view.findViewById(R.id.goods_money);

        checkall = view.findViewById(R.id.checkall);



        redactlayout.setVisibility(View.GONE);
//        recyclerView =(RecyclerView) view.findViewById(R.id.cart_recycler);
       // recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

        userpresenter = new CartPresenter(this);
        user_id = SharedPreferencesUtils.getParam(getActivity(), "USER_ID", "").toString();
        Log.d("Main","==================="+user_id);
        Map<String,String> mmap = new HashMap<String, String>();
        mmap.put("uid",user_id);


        userpresenter.getUrl(API.API_GOODS,mmap);

        btn_redact.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(isgone==false){
                    redactlayout.setVisibility(View.VISIBLE);
                    btn_redact.setText("完成");

                    isgone = true;
                }else{
                    redactlayout.setVisibility(View.GONE);
                    btn_redact.setText("编辑");

                    for(int i = 0 ; i < mlist.size();i++){
                        for(int j = 0 ; j < mlist.get(i).getList().size();j++){

                            Map<String,String> mmap = new HashMap<String, String>();
                            mmap.put("uid",user_id);
                            mmap.put("sellerid",mlist.get(i).getList().get(j).getSellerid());
                            mmap.put("pid",mlist.get(i).getList().get(j).getPid());
                            mmap.put("num",mlist.get(i).getList().get(j).getNum());
                            mmap.put("selected",mlist.get(i).getList().get(j).getSelected());

                            Retrofit retrofit = new Retrofit.Builder().baseUrl(API.API_GOODS).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build();

                            ApiService apiService = retrofit.create(ApiService.class);
                            Observable<UpCartDataBean> upCartDataBeanObservable = apiService.upCart("product/updateCarts", mmap);

                            upCartDataBeanObservable.subscribeOn(Schedulers.io())
                                    .observeOn(AndroidSchedulers.mainThread())
                                    .subscribe(new Observer<UpCartDataBean>() {
                                        @Override
                                        public void onCompleted() {

                                        }

                                        @Override
                                        public void onError(Throwable e) {

                                        }

                                        @Override
                                        public void onNext(UpCartDataBean upCartDataBean) {
                                            Toast.makeText(getActivity(), upCartDataBean.getMsg().toString(), Toast.LENGTH_SHORT).show();
                                        }
                                    });

                        }
                    }



                    isgone = false;
                }

            }
        });

        checkall.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                float   allmoney = 0;
                if(ischeckall == false){
                    for(int i = 0 ; i < mlist.size(); i++){
                        for(int j = 0 ; j < mlist.get(i).getList().size();j++){
                            mlist.get(i).getList().get(0).setSelected("1");
                        }
                    }

                    for(int j = 0 ; j < mlist.size();j++){
                        for(int k = 0 ; k < mlist.get(j).getList().size(); k++){
                            if(mlist.get(j).getList().get(k).getSelected().equals("1")){
                                float price = Float.parseFloat(mlist.get(j).getList().get(k).getPrice());
                                int num = Integer.parseInt(mlist.get(j).getList().get(k).getNum());
                                allmoney+=price*num;
                            }
                        }
                    }

                    money.setText(""+allmoney+"");

                    ischeckall = true;
                }else{
                    for(int i = 0 ; i < mlist.size(); i++){

                        for(int j = 0 ; j < mlist.get(i).getList().size();j++){
                            mlist.get(i).getList().get(0).setSelected("0");
                        }

                    }
                    money.setText(""+allmoney+"");
                    ischeckall = false;
                }


                adapter.notifyDataSetChanged();
            }
        });


        return view;
    }

    @Override
    public void getData(GetCartBean list) {
        mlist  = new ArrayList<>();
        mlist = (ArrayList<GetCartBean.DataBean>) list.getData();
        Log.d("Main","+================="+mlist.get(0).getList().toString());

        //adapter = new MyCartRecyclerAdapter(mlist,getActivity());
        //recyclerView.setAdapter(adapter);
        adapter = new MyExpandAdapter(getActivity(),mlist,money,checkall);
        expandableListView.setAdapter(adapter);
    }
}
 
适配器逻辑代码
 
public class MyExpandAdapter extends BaseExpandableListAdapter {

    Context context;
    ArrayList<GetCartBean.DataBean> list;
    boolean ischeck = false;

    boolean isgroupcheckall = false;

    TextView textView;
    CheckBox checkall;

    public MyExpandAdapter(Context context, ArrayList<GetCartBean.DataBean> list,TextView textView,CheckBox checkall) {
        this.context = context;
        this.list = list;
        this.textView=textView;
        this.checkall = checkall;
    }







    @Override
    public int getGroupCount() {
        return list.size();
    }

    @Override
    public int getChildrenCount(int i) {
        return list.get(i).getList().size();
    }

    @Override
    public Object getGroup(int i) {
        return list.get(i);
    }

    @Override
    public Object getChild(int i, int i1) {
        return list.get(i).getList().get(i1);
    }

    @Override
    public long getGroupId(int i) {
        return i;
    }

    @Override
    public long getChildId(int i, int i1) {
        return i1;
    }

    @Override
    public boolean hasStableIds() {
        return false;
    }

    @Override
    public View getGroupView(final int i, boolean b, View view, ViewGroup viewGroup) {

        GroupHolder holder = null;
        if (view == null){
            view = LayoutInflater.from(context).inflate(R.layout.item_cart_group,viewGroup,false);
            holder  = new GroupHolder();
            holder.checkBox = (CheckBox) view.findViewById(R.id.group_check);
            view.setTag(holder);
        }else{
            holder = (GroupHolder) view.getTag();
        }

        holder.checkBox.setText(list.get(i).getSellerName());
        holder.checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if(isgroupcheckall == false){
                    for(int j = 0 ; j < list.get(i).getList().size();j++){
                        list.get(i).getList().get(j).setSelected("1");
                    }
                    isgroupcheckall = true;
                }else{
                    for(int j = 0 ; j < list.get(i).getList().size();j++){
                        list.get(i).getList().get(j).setSelected("0");
                    }
                    isgroupcheckall = false;
                }

                changeMoney();
                int checksize = 0;
                int allchecksize = 0;
                for(int j = 0 ; j < list.size();j++){
                    for(int k = 0 ; k < list.get(j).getList().size(); k++){
                        allchecksize++;
                        if(list.get(j).getList().get(k).getSelected().equals("1")){
                            checksize++;
                        }
                    }
                }
                if(checksize == allchecksize){
                    checkall.setChecked(true);
                }else{
                    checkall.setChecked(false);
                }
                checksize =0;
                allchecksize = 0;

                notifyDataSetChanged();

            }
        });

        return view;
    }

    @Override
    public View getChildView(final int i, final int i1, boolean b, View view, ViewGroup viewGroup) {


        ChildHolder holder = null;
        if (view == null){
            view = LayoutInflater.from(context).inflate(R.layout.item_cart_child,viewGroup,false);
            holder = new ChildHolder();
            holder.goods_head = view.findViewById(R.id.cart_goods_head);
            holder.goods_name = view.findViewById(R.id.cart_goods_name);
            holder.goods_num = view.findViewById(R.id.cart_goods_num);
            holder.goods_price = view.findViewById(R.id.cart_goods_price);
            holder.mycheck = view.findViewById(mycheck);
            holder.btn_add = view.findViewById(R.id.btn_addgoodsnum);
            holder.btn_reduce = view.findViewById(R.id.btn_reducegoodsnum);
            holder.btn_delete = view.findViewById(R.id.btn_deletegoods);
            view.setTag(holder);
        }else{
            holder = (ChildHolder) view.getTag();
        }

        holder.goods_name.setText(list.get(i).getList().get(i1).getTitle());
        holder.goods_num.setText(list.get(i).getList().get(i1).getNum());
        holder.goods_price.setText(list.get(i).getList().get(i1).getPrice());
        Uri uri = Uri.parse(list.get(i).getList().get(i1).getImages());
        holder.goods_head.setImageURI(uri);
        String selected = list.get(i).getList().get(i1).getSelected();
        if(selected.equals("0")){
            ischeck = false;
        }else{
            ischeck = true;
        }
        holder.mycheck.setChecked(ischeck);

        holder.btn_delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String user_id = SharedPreferencesUtils.getParam(context, "USER_ID", "").toString();
                Map<String,String> mmap = new HashMap<String, String>();
                mmap.put("uid",user_id);
                mmap.put("pid",list.get(i).getList().get(i1).getPid());

                Toast.makeText(context, "删除了啊", Toast.LENGTH_SHORT).show();

                Retrofit retrofit = new Retrofit.Builder().baseUrl(API.API_GOODS).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build();
                ApiService apiService = retrofit.create(ApiService.class);
                Observable<DeleteCartBean> deleteCartBeanObservable = apiService.deleteCart("product/deleteCart", mmap);

                deleteCartBeanObservable.subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe(new Observer<DeleteCartBean>() {
                            @Override
                            public void onCompleted() {

                            }

                            @Override
                            public void onError(Throwable e) {

                            }

                            @Override
                            public void onNext(DeleteCartBean deleteCartBean) {
                                Toast.makeText(context, deleteCartBean.getMsg(), Toast.LENGTH_SHORT).show();
                            }
                        });
                if(list.get(i).getList() == null){
                    list.remove(i);
                }
                list.get(i).getList().remove(i1);
                notifyDataSetChanged();
            }
        });

        holder.mycheck.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(list.get(i).getList().get(i1).getSelected().equals("0")){
                    list.get(i).getList().get(i1).setSelected("1");
                }else{
                    list.get(i).getList().get(i1).setSelected("0");
                }

                changeMoney();
                int checksize = 0;
                int allchecksize = 0;
                for(int j = 0 ; j < list.size();j++){
                    for(int k = 0 ; k < list.get(j).getList().size(); k++){
                        allchecksize++;
                        if(list.get(j).getList().get(k).getSelected().equals("1")){
                            checksize++;
                        }
                    }
                }
                if(checksize == allchecksize){
                    checkall.setChecked(true);
                }else{
                    checkall.setChecked(false);
                }
                checksize =0;
                allchecksize = 0;

                notifyDataSetChanged();
            }
        });


        holder.btn_add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String nownum = list.get(i).getList().get(i1).getNum();
                int num = Integer.parseInt(nownum);
                list.get(i).getList().get(i1).setNum(++num+"");
                changeMoney();
                notifyDataSetChanged();
            }
        });

        holder.btn_reduce.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(list.get(i).getList().get(i1).getNum().equals("1")){
                    list.get(i).getList().get(i1).setNum("1");
                }else{
                    String nownum = list.get(i).getList().get(i1).getNum();
                    int num = Integer.parseInt(nownum);
                    list.get(i).getList().get(i1).setNum(--num+"");
                }
                changeMoney();
                notifyDataSetChanged();
            }
        });



        return view;
    }


    public void changeMoney(){
        float allmoney = 0;
        for(int j = 0 ; j < list.size();j++){
            for(int k = 0 ; k < list.get(j).getList().size(); k++){
                if(list.get(j).getList().get(k).getSelected().equals("1")){
                    float price = Float.parseFloat(list.get(j).getList().get(k).getPrice());
                    int num = Integer.parseInt(list.get(j).getList().get(k).getNum());
                    allmoney+=price*num;
                }
            }
        }
        textView.setText(""+allmoney+"");
    }

    @Override
    public boolean isChildSelectable(int i, int i1) {
        return true;
    }

    class GroupHolder {
        CheckBox checkBox;
    }

    class ChildHolder{
        SimpleDraweeView goods_head;
        TextView goods_name,goods_num,goods_price;
        CheckBox mycheck;
        Button btn_add,btn_reduce,btn_delete;
    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值