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

来源:互联网 发布:2016奥运男篮冠军数据 编辑:程序博客网 时间:2024/06/05 18:50

首先是主页面布局


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