package hjy.gouwu.Fragment; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; import android.widget.CheckBox; import android.widget.ExpandableListView; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.squareup.picasso.Picasso; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import hjy.gouwu.Login_register.Login_go; import hjy.gouwu.R; import hjy.gouwu.Url_data.Url_data; import hjy.gouwu.bean.goodList.goodlistbean; import hjy.gouwu.bean.goodList.goodsdele; import hjy.gouwu.utils.GsonObjectCallback; import hjy.gouwu.utils.OkHttp3Utils; import okhttp3.Call; public class Shopping extends Fragment { private Map<String,String> mapList=new HashMap<String, String>(); private TextView goodssize,tv_shopcart_totalprice,tv_shopcart_totalnum,tv_shopcart_submit,null_goods; CheckBox tv_shopcart_addselect; List<hjy.gouwu.bean.goodList.goodlistbean.DatasBean.CartListBean> gblist; private ExpandableListView expandableListView; ExpandableAdapter exd; Map<String,String> mapdele=new HashMap<String, String>(); LinearLayout ll_pay; //订单集合 List<String> ding=new ArrayList<String>(); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { //加载布局 View view=inflater.inflate(R.layout.shopping, container, false); expandableListView=view.findViewById(R.id.els); //全选 tv_shopcart_addselect=view.findViewById(R.id.tv_shopcart_addselect); //总价 tv_shopcart_totalprice=view.findViewById(R.id.tv_shopcart_totalprice); //总商品量 tv_shopcart_totalnum=view.findViewById(R.id.tv_shopcart_totalnum); //结算按钮 tv_shopcart_submit=view.findViewById(R.id.tv_shopcart_submit); tv_shopcart_addselect=view.findViewById(R.id.tv_shopcart_addselect); tv_shopcart_submit=view.findViewById(R.id.tv_shopcart_submit); null_goods=view.findViewById(R.id.null_goods); ll_pay=view.findViewById(R.id.ll_pay); goodssize=view.findViewById(R.id.shopping_size); //判断登陆 if(Url_data.read.getString("key","").toString().equals("")){ Toast.makeText(getActivity(),"请登陆",Toast.LENGTH_SHORT).show(); startActivity(new Intent(getActivity(), Login_go.class)); } //添加到请求 mapList.put("key",Url_data.read.getString("key","")); //设置一个空的指示器 expandableListView.setGroupIndicator(null); tv_shopcart_addselect.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (((CheckBox) view).isChecked()) { List<goodlistbean.DatasBean.CartListBean> data = gblist; for (int i = 0; i < data.size(); i++) { Log.i("xxx", data.get(i).isAllCheck() + ""); goodlistbean.DatasBean.CartListBean groupDatas = gblist.get(i); groupDatas.setAllCheck(true); List<goodlistbean.DatasBean.CartListBean.GoodsBean> datas = gblist.get(i).getGoods(); for (int j = 0; j < datas.size(); j++) { Log.i("xxx", datas.get(j).isItemCheck() + ""); List<goodlistbean.DatasBean.CartListBean.GoodsBean> childDatas = gblist.get(i).getGoods(); for (goodlistbean.DatasBean.CartListBean.GoodsBean childData : childDatas) { childData.setItemCheck(true); } } } //刷新界面 notifyCheckAdapter(); } else { List<goodlistbean.DatasBean.CartListBean> data = gblist; for (int i = 0; i < data.size(); i++) { Log.i("xxx", data.get(i).isAllCheck() + ""); goodlistbean.DatasBean.CartListBean groupDatas = gblist.get(i); groupDatas.setAllCheck(false); List<goodlistbean.DatasBean.CartListBean.GoodsBean> datas = gblist.get(i).getGoods(); for (int j = 0; j < datas.size(); j++) { Log.i("xxx", datas.get(j).isItemCheck() + ""); List<goodlistbean.DatasBean.CartListBean.GoodsBean> childDatas = gblist.get(i).getGoods(); for (goodlistbean.DatasBean.CartListBean.GoodsBean childData : childDatas) { childData.setItemCheck(false); } } } //刷新界面 notifyCheckAdapter(); } } }); tv_shopcart_submit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { } }); okhttp(); return view; } private void okhttp() { OkHttp3Utils.doPost(Url_data.MygoodsShoopingList, mapList, new GsonObjectCallback<goodlistbean>() { @Override public void onUi(goodlistbean goodlistbean) { gblist= goodlistbean.getDatas().getCart_list(); //几件商品 goodssize.setText(goodlistbean.getDatas().getCart_count()+""); //适配器 String storename =gblist.get(0).getStore_name().toString(); exd=new ExpandableAdapter(getContext(),storename,gblist); expandableListView.setAdapter(exd); //默认显示哪个折叠列表 expandableListView.expandGroup(0); } @Override public void onFailed(Call call, IOException e) { } }); } public class ExpandableAdapter extends BaseExpandableListAdapter { Context context; String storename; List<goodlistbean.DatasBean.CartListBean> gblist; public ExpandableAdapter(Context context, String storename, List<goodlistbean.DatasBean.CartListBean> gblist) { this.context=context; this.storename=storename; this.gblist=gblist; } //删除条目的方法 public void removeChildItem(int groupPosition,int childPosition){ this.gblist.get(groupPosition).getGoods().remove(childPosition); notifyDataSetChanged(); } //删除条目的方法 public void removeGroupItem(int groupPosition){ this.gblist.remove(groupPosition); notifyDataSetChanged(); } @Override public int getGroupCount() { return gblist.size(); } @Override public int getChildrenCount(int i) { return gblist.get(i).getGoods().size(); } @Override public Object getGroup(int i) { return gblist.get(i); } @Override public Object getChild(int i, int i1) { return gblist.get(i).getGoods().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) { view=View.inflate(context, R.layout.item_shopping, null); CheckBox iv_item_shopcart_shopselect=view.findViewById(R.id.iv_item_shopcart_shopselect); TextView tv_item_shopcart_shopname=(TextView) view.findViewById(R.id.tv_item_shopcart_shopname); tv_item_shopcart_shopname.setText(storename); if (gblist.get(i).isAllCheck()) { iv_item_shopcart_shopselect.setChecked(true); } else { iv_item_shopcart_shopselect.setChecked(false); } //一级监听 iv_item_shopcart_shopselect.setOnClickListener(new OnGroupClickListener(i, iv_item_shopcart_shopselect)); return view; } @Override public View getChildView(final int i, final int i1, boolean b, View view, ViewGroup viewGroup) { view=View.inflate(context, R.layout.item_shoppinggoods, null); TextView tv_item_shopcart_clothname=(TextView) view.findViewById(R.id.tv_item_shopcart_clothname); TextView tv_item_shopcart_cloth_price=view.findViewById(R.id.tv_item_shopcart_cloth_price); TextView tv_item_shopcart_cloth_num=view.findViewById(R.id.tv_item_shopcart_cloth_num); ImageView iv_item_shopcart_cloth_pic=(ImageView) view.findViewById(R.id.iv_item_shopcart_cloth_pic); ImageView iv_item_shopcart_cloth_delete=view.findViewById(R.id.iv_item_shopcart_cloth_delete); CheckBox tv_item_shopcart_clothselect=view.findViewById(R.id.tv_item_shopcart_clothselect); tv_item_shopcart_clothname.setText(gblist.get(i).getGoods().get(i1).getGoods_name().toString()); tv_item_shopcart_cloth_price.setText("¥"+gblist.get(i).getGoods().get(i1).getGoods_price().toString()); tv_item_shopcart_cloth_num.setText("个数:"+gblist.get(i).getGoods().get(i1).getGoods_num().toString()); Picasso.with(iv_item_shopcart_cloth_pic.getContext()).load(gblist.get(i).getGoods().get(i1).getGoods_image_url()).into(iv_item_shopcart_cloth_pic); mapdele.put("key",Url_data.read.getString("key","")); mapdele.put("cart_id",gblist.get(i).getGoods().get(i1).getCart_id().toString()); iv_item_shopcart_cloth_delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View view) { OkHttp3Utils.doPost(Url_data.MygoodsShoopingdele, mapdele, new GsonObjectCallback<goodsdele>() { @Override public void onUi(goodsdele goodsdele) { if(goodsdele.getCode()==200){ removeChildItem(i,i1); //从新获得数量 goodssize.setText(gblist.get(i).getGoods().size()+""); if(gblist.get(i).getGoods().size()==0){ removeGroupItem(i); } //判断是否有值 if (gblist.size()==0) { //没有值将列表和总价隐藏,显示提示语句 ll_pay.setVisibility(View.GONE); null_goods.setVisibility(View.VISIBLE); return; } } } @Override public void onFailed(Call call, IOException e) { } }); } }); if (gblist.get(i).getGoods().get(i1).isItemCheck()) { tv_item_shopcart_clothselect.setChecked(true); } else { tv_item_shopcart_clothselect.setChecked(false); } tv_item_shopcart_clothselect.setOnClickListener(new OnChildCheckListener(i, i1, tv_item_shopcart_clothselect)); return view; } @Override public boolean isChildSelectable(int i, int i1) { return true; } } //一级监听 private class OnGroupClickListener implements View.OnClickListener { int groupPosition; CheckBox iv_item_shopcart_shopselect; public OnGroupClickListener(int groupPosition, CheckBox iv_item_shopcart_shopselect) { this.iv_item_shopcart_shopselect = iv_item_shopcart_shopselect; this.groupPosition = groupPosition; } @Override public void onClick(View v) { if (((CheckBox) v).isChecked()) { //一级全选 setCheck(true); } else { //取消全选 setCheck(false); iv_item_shopcart_shopselect.setChecked(false); } notifyCheckAdapter(); } public void setCheck(boolean checkFlag) { goodlistbean.DatasBean.CartListBean groupDatas = gblist.get(groupPosition); List<goodlistbean.DatasBean.CartListBean> data= gblist; //一级状态 groupDatas.setAllCheck(checkFlag); //全选状态判断 int num = 0; for (int i = 0; i < data.size(); i++) { boolean allCheck = data.get(i).isAllCheck(); if (!allCheck) { num++; } } if (num == 0) { iv_item_shopcart_shopselect.setChecked(true); } else { iv_item_shopcart_shopselect.setChecked(false); } //二级状态 List<goodlistbean.DatasBean.CartListBean.GoodsBean> childDatas = groupDatas.getGoods(); for (goodlistbean.DatasBean.CartListBean.GoodsBean childData : childDatas) { //二级状态 childData.setItemCheck(checkFlag); } } } //二级监听 private class OnChildCheckListener implements View.OnClickListener { int groupPosition; int childPosition; CheckBox tv_item_shopcart_clothselect; public OnChildCheckListener(int groupPosition, int childPosition, CheckBox tv_item_shopcart_clothselect) { this.tv_item_shopcart_clothselect = tv_item_shopcart_clothselect; this.groupPosition = groupPosition; this.childPosition = childPosition; } @Override public void onClick(View v) { if (((CheckBox) v).isChecked()) { //子选中 gblist.get(groupPosition).getGoods().get(childPosition).setItemCheck(true); //获得所需要的cartid,num ding.add(gblist.get(groupPosition).getGoods().get(childPosition).getCart_id().toString()+gblist.get(groupPosition).getGoods().get(childPosition).getGoods_num().toString()); } else { //子未选中 gblist.get(groupPosition).getGoods().get(childPosition).setItemCheck(false); } //二级联动一级状态 setParentCheckFlag(); //检测状态 二级联动全选 int num = 0; for (int i = 0; i < gblist.size(); i++) { boolean allCheck = gblist.get(i).isAllCheck(); if (!allCheck) { num++; } } if (num == 0) { tv_item_shopcart_clothselect.setChecked(true); } else { tv_item_shopcart_clothselect.setChecked(false); } } //二级联动一级状态 private void setParentCheckFlag() { goodlistbean.DatasBean.CartListBean dataInfo = gblist.get(groupPosition); List<goodlistbean.DatasBean.CartListBean.GoodsBean> datasInfos= gblist.get(groupPosition).getGoods(); for (int i = 0; i < datasInfos.size(); i++) { if (!datasInfos.get(i).isItemCheck()) { //子未选中 父取消选中 dataInfo.setAllCheck(false); notifyCheckAdapter(); return; } if (i == datasInfos.size() - 1) { //子选中 父选中 dataInfo.setAllCheck(true); notifyCheckAdapter(); return; } } // 没出现全选或者取消全选的时候执行的 sum(datasInfos); } } //统计数量和价格 private void sum(List<goodlistbean.DatasBean.CartListBean.GoodsBean> datasInfos) { int num = 0; int price = 0; List<goodlistbean.DatasBean.CartListBean> data = gblist; for (goodlistbean.DatasBean.CartListBean parentData : data) { for (goodlistbean.DatasBean.CartListBean.GoodsBean child :datasInfos) { if (child.isItemCheck()) { num++; double d=Double.valueOf(child.getGoods_price().toString()).doubleValue(); int i = (int)d; price +=i; } } } tv_shopcart_totalnum.setText("共"+num+"件商品"); tv_shopcart_totalprice.setText("总价:"+price); } //刷新适配器界面 private void notifyCheckAdapter() { sum(gblist.get(0).getGoods()); expandableListView.setAdapter(exd); int count = expandableListView.getCount(); for (int i = 0; i < count; i++) { expandableListView.expandGroup(i); } } } //bean包package hjy.gouwu.bean.goodList; import java.util.List; public class goodlistbean { /** * code : 200 * datas : {"cart_list":[{"store_id":"1","store_name":"好商城V5","goods":[{"cart_id":"3","buyer_id":"8","store_id":"1","store_name":"好商城V5","goods_id":"100009","goods_name":"劳力士Rolex 日志型系列 116200 63200 自动机械钢带男表联保正品","goods_price":"52800.00","goods_num":"1","goods_image":"1_04752627958339099.jpg","bl_id":"0","state":true,"storage_state":true,"goods_commonid":"100009","gc_id":"587","transport_id":"0","goods_freight":"0.00","goods_vat":"0","goods_storage":"99","goods_storage_alarm":"0","is_fcode":"0","have_gift":"0","groupbuy_info":[],"xianshi_info":[],"is_book":"0","book_down_payment":"0.00","book_final_payment":"0.00","book_down_time":"0","is_chain":"0","sole_info":[],"contractlist":[],"goods_image_url":"http://169.254.133.48/data/upload/shop/store/goods/1/1_04752627958339099_240.jpg","goods_total":"52800.00"}]}],"sum":"52800.00","cart_count":1} */ private int code; private DatasBean datas; public int getCode() { return code; } public void setCode(int code) { this.code = code; } public DatasBean getDatas() { return datas; } public void setDatas(DatasBean datas) { this.datas = datas; } public static class DatasBean { /** * cart_list : [{"store_id":"1","store_name":"好商城V5","goods":[{"cart_id":"3","buyer_id":"8","store_id":"1","store_name":"好商城V5","goods_id":"100009","goods_name":"劳力士Rolex 日志型系列 116200 63200 自动机械钢带男表联保正品","goods_price":"52800.00","goods_num":"1","goods_image":"1_04752627958339099.jpg","bl_id":"0","state":true,"storage_state":true,"goods_commonid":"100009","gc_id":"587","transport_id":"0","goods_freight":"0.00","goods_vat":"0","goods_storage":"99","goods_storage_alarm":"0","is_fcode":"0","have_gift":"0","groupbuy_info":[],"xianshi_info":[],"is_book":"0","book_down_payment":"0.00","book_final_payment":"0.00","book_down_time":"0","is_chain":"0","sole_info":[],"contractlist":[],"goods_image_url":"http://169.254.133.48/data/upload/shop/store/goods/1/1_04752627958339099_240.jpg","goods_total":"52800.00"}]}] * sum : 52800.00 * cart_count : 1 */ private String sum; private int cart_count; private List<CartListBean> cart_list; public String getSum() { return sum; } public void setSum(String sum) { this.sum = sum; } public int getCart_count() { return cart_count; } public void setCart_count(int cart_count) { this.cart_count = cart_count; } public List<CartListBean> getCart_list() { return cart_list; } public void setCart_list(List<CartListBean> cart_list) { this.cart_list = cart_list; } public static class CartListBean { /** * store_id : 1 * store_name : 好商城V5 * goods : [{"cart_id":"3","buyer_id":"8","store_id":"1","store_name":"好商城V5","goods_id":"100009","goods_name":"劳力士Rolex 日志型系列 116200 63200 自动机械钢带男表联保正品","goods_price":"52800.00","goods_num":"1","goods_image":"1_04752627958339099.jpg","bl_id":"0","state":true,"storage_state":true,"goods_commonid":"100009","gc_id":"587","transport_id":"0","goods_freight":"0.00","goods_vat":"0","goods_storage":"99","goods_storage_alarm":"0","is_fcode":"0","have_gift":"0","groupbuy_info":[],"xianshi_info":[],"is_book":"0","book_down_payment":"0.00","book_final_payment":"0.00","book_down_time":"0","is_chain":"0","sole_info":[],"contractlist":[],"goods_image_url":"http://169.254.133.48/data/upload/shop/store/goods/1/1_04752627958339099_240.jpg","goods_total":"52800.00"}] */ private String store_id; private String store_name; private List<GoodsBean> goods; public boolean allCheck = false; public boolean isAllCheck() { return allCheck; } public void setAllCheck(boolean allCheck) { this.allCheck = allCheck; } public String getStore_id() { return store_id; } public void setStore_id(String store_id) { this.store_id = store_id; } public String getStore_name() { return store_name; } public void setStore_name(String store_name) { this.store_name = store_name; } public List<GoodsBean> getGoods() { return goods; } public void setGoods(List<GoodsBean> goods) { this.goods = goods; } public static class GoodsBean { /** * cart_id : 3 * buyer_id : 8 * store_id : 1 * store_name : 好商城V5 * goods_id : 100009 * goods_name : 劳力士Rolex 日志型系列 116200 63200 自动机械钢带男表联保正品 * goods_price : 52800.00 * goods_num : 1 * goods_image : 1_04752627958339099.jpg * bl_id : 0 * state : true * storage_state : true * goods_commonid : 100009 * gc_id : 587 * transport_id : 0 * goods_freight : 0.00 * goods_vat : 0 * goods_storage : 99 * goods_storage_alarm : 0 * is_fcode : 0 * have_gift : 0 * groupbuy_info : [] * xianshi_info : [] * is_book : 0 * book_down_payment : 0.00 * book_final_payment : 0.00 * book_down_time : 0 * is_chain : 0 * sole_info : [] * contractlist : [] * goods_image_url : http://169.254.133.48/data/upload/shop/store/goods/1/1_04752627958339099_240.jpg * goods_total : 52800.00 */ private String cart_id; private String buyer_id; private String store_id; private String store_name; private String goods_id; private String goods_name; private String goods_price; private String goods_num; private String goods_image; private String bl_id; private boolean state; private boolean storage_state; private String goods_commonid; private String gc_id; private String transport_id; private String goods_freight; private String goods_vat; private String goods_storage; private String goods_storage_alarm; private String is_fcode; private String have_gift; private String is_book; private String book_down_payment; private String book_final_payment; private String book_down_time; private String is_chain; private String goods_image_url; private String goods_total; private List<?> groupbuy_info; private List<?> xianshi_info; private List<?> sole_info; private List<?> contractlist; public boolean itemCheck = false; public boolean isItemCheck() { return itemCheck; } public void setItemCheck(boolean itemCheck) { this.itemCheck = itemCheck; } public String getCart_id() { return cart_id; } public void setCart_id(String cart_id) { this.cart_id = cart_id; } public String getBuyer_id() { return buyer_id; } public void setBuyer_id(String buyer_id) { this.buyer_id = buyer_id; } public String getStore_id() { return store_id; } public void setStore_id(String store_id) { this.store_id = store_id; } public String getStore_name() { return store_name; } public void setStore_name(String store_name) { this.store_name = store_name; } public String getGoods_id() { return goods_id; } public void setGoods_id(String goods_id) { this.goods_id = goods_id; } public String getGoods_name() { return goods_name; } public void setGoods_name(String goods_name) { this.goods_name = goods_name; } public String getGoods_price() { return goods_price; } public void setGoods_price(String goods_price) { this.goods_price = goods_price; } public String getGoods_num() { return goods_num; } public void setGoods_num(String goods_num) { this.goods_num = goods_num; } public String getGoods_image() { return goods_image; } public void setGoods_image(String goods_image) { this.goods_image = goods_image; } public String getBl_id() { return bl_id; } public void setBl_id(String bl_id) { this.bl_id = bl_id; } public boolean isState() { return state; } public void setState(boolean state) { this.state = state; } public boolean isStorage_state() { return storage_state; } public void setStorage_state(boolean storage_state) { this.storage_state = storage_state; } public String getGoods_commonid() { return goods_commonid; } public void setGoods_commonid(String goods_commonid) { this.goods_commonid = goods_commonid; } public String getGc_id() { return gc_id; } public void setGc_id(String gc_id) { this.gc_id = gc_id; } public String getTransport_id() { return transport_id; } public void setTransport_id(String transport_id) { this.transport_id = transport_id; } public String getGoods_freight() { return goods_freight; } public void setGoods_freight(String goods_freight) { this.goods_freight = goods_freight; } public String getGoods_vat() { return goods_vat; } public void setGoods_vat(String goods_vat) { this.goods_vat = goods_vat; } public String getGoods_storage() { return goods_storage; } public void setGoods_storage(String goods_storage) { this.goods_storage = goods_storage; } public String getGoods_storage_alarm() { return goods_storage_alarm; } public void setGoods_storage_alarm(String goods_storage_alarm) { this.goods_storage_alarm = goods_storage_alarm; } public String getIs_fcode() { return is_fcode; } public void setIs_fcode(String is_fcode) { this.is_fcode = is_fcode; } public String getHave_gift() { return have_gift; } public void setHave_gift(String have_gift) { this.have_gift = have_gift; } public String getIs_book() { return is_book; } public void setIs_book(String is_book) { this.is_book = is_book; } public String getBook_down_payment() { return book_down_payment; } public void setBook_down_payment(String book_down_payment) { this.book_down_payment = book_down_payment; } public String getBook_final_payment() { return book_final_payment; } public void setBook_final_payment(String book_final_payment) { this.book_final_payment = book_final_payment; } public String getBook_down_time() { return book_down_time; } public void setBook_down_time(String book_down_time) { this.book_down_time = book_down_time; } public String getIs_chain() { return is_chain; } public void setIs_chain(String is_chain) { this.is_chain = is_chain; } public String getGoods_image_url() { return goods_image_url; } public void setGoods_image_url(String goods_image_url) { this.goods_image_url = goods_image_url; } public String getGoods_total() { return goods_total; } public void setGoods_total(String goods_total) { this.goods_total = goods_total; } public List<?> getGroupbuy_info() { return groupbuy_info; } public void setGroupbuy_info(List<?> groupbuy_info) { this.groupbuy_info = groupbuy_info; } public List<?> getXianshi_info() { return xianshi_info; } public void setXianshi_info(List<?> xianshi_info) { this.xianshi_info = xianshi_info; } public List<?> getSole_info() { return sole_info; } public void setSole_info(List<?> sole_info) { this.sole_info = sole_info; } public List<?> getContractlist() { return contractlist; } public void setContractlist(List<?> contractlist) { this.contractlist = contractlist; } } } } }
购物车的二级列表全选单选
最新推荐文章于 2022-09-05 14:48:15 发布