二级列表实现购物车

public classMainActivityextendsAppCompatActivity {privateExpandableListViewlistview;privateMyAdpateradpater;privateTextViewchecked_shop;privateTextViewprice;@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);

listview= (ExpandableListView) findViewById(R.id.listview);

adpater=newMyAdpater(this);listview.setAdapter(adpater);finalCheckBox checkAll = (CheckBox) findViewById(R.id.checkAll);price= (TextView) findViewById(R.id.price);checked_shop= (TextView) findViewById(R.id.checked_shop);checkAll.setOnClickListener(newView.OnClickListener() {@Overridepublic voidonClick(View v) {//设置商品全部选中adpater.checkAllShop(checkAll.isChecked());//计算选中的价格和数量String shopPrice =adpater.getShopPrice();//判断商品是否全部选中booleanb =adpater.selectAll();String[] split = shopPrice.split(",");price.setText(split[0]);checked_shop.setText(split[1]);checkAll.setChecked(b);}        });adpater.getAdapterData(newMyAdpater.AdapterData() {@Overridepublic voidData(View v,String str, booleanb) {                String[] split = str.split(",");price.setText(split[0]);checked_shop.setText(split[1]);checkAll.setChecked(b);}        });checkAll.setChecked(adpater.selectAll());adpater.notifyDataSetChanged();}}


//适配器

public classMyAdpaterextendsBaseExpandableListAdapter {privateContextcontext;privateString[]group;privateString[][]child;privateHashMap

groupHashMap;privateList>childList;privateList>dataList;publicMyAdpater(Context context) {this.context= context;initData();}private voidinitData() {group=newString[5];child=newString[5][];groupHashMap=newHashMap<>();childList=newArrayList<>();dataList=newArrayList<>();for(inti =0;i <5;i++) {group[i] ="商家"+ i;groupHashMap.put(i, false);String[] strings =newString[3];HashMap map =newHashMap<>();ArrayList been =newArrayList<>();for(inty =0;y <3;y++) {                strings[y] ="商家"+ i +"商品"+ y;map.put(y, false);Bean bean =newBean("100","1");been.add(bean);}child[i] = strings;childList.add(map);dataList.add(been);}    }@Overridepublic intgetGroupCount() {returngroup.length;}@Overridepublic intgetChildrenCount(intgroupPosition) {returnchild[groupPosition].length;}@OverridepublicObjectgetGroup(intgroupPosition) {returngroup[groupPosition];}@OverridepublicObjectgetChild(intgroupPosition, intchildPosition) {returnchild[childPosition];}@Overridepublic longgetGroupId(intgroupPosition) {returngroupPosition;}@Overridepublic longgetChildId(intgroupPosition, intchildPosition) {returnchildPosition;}@Overridepublic booleanhasStableIds() {return false;}@OverridepublicViewgetGroupView(final intgroupPosition, booleanisExpanded,View convertView,ViewGroup parent) {        GroupViewHolder holder =null;if(convertView ==null) {            convertView = View.inflate(context,R.layout.group_item, null);holder =newGroupViewHolder();holder.tv= (TextView) convertView.findViewById(R.id.group_tv);holder.ck= (CheckBox) convertView.findViewById(R.id.group_ck);convertView.setTag(holder);}else{            holder = (GroupViewHolder) convertView.getTag();}        holder.tv.setText(group[groupPosition]);holder.ck.setOnClickListener(newView.OnClickListener() {@Overridepublic voidonClick(View v) {groupHashMap.put(groupPosition,!groupHashMap.get(groupPosition));//设置二级列表的选中状态,根据一级列表的状态来改变setChildCheckAll();//计算选中的价格和数量String shopPrice = getShopPrice();//判断商品是否全部选中booleanb = selectAll();adapterData.Data(v,shopPrice,b);}        });holder.ck.setChecked(groupHashMap.get(groupPosition));returnconvertView;}@OverridepublicViewgetChildView(final intgroupPosition, final intchildPosition,booleanisLastChild,View convertView,ViewGroup parent) {        ChildViewHolder holder =null;if(convertView ==null) {            convertView = View.inflate(context,R.layout.child_item, null);holder =newChildViewHolder();holder.tv= (TextView) convertView.findViewById(R.id.child_tv);holder.ck= (CheckBox) convertView.findViewById(R.id.child_ck);holder.jianshao= (TextView) convertView.findViewById(R.id.jianshao);holder.zengjia= (TextView) convertView.findViewById(R.id.zengjia);holder.number= (TextView) convertView.findViewById(R.id.number);convertView.setTag(holder);}else{            holder = (ChildViewHolder) convertView.getTag();}        holder.tv.setText(child[groupPosition][childPosition]);holder.ck.setOnClickListener(newView.OnClickListener() {@Overridepublic voidonClick(View v) {                HashMap hashMap =childList.get(groupPosition);hashMap.put(childPosition,!hashMap.get(childPosition));//判断二级列表是否全部选中ChildisChecked(groupPosition);//计算选中的价格和数量String shopPrice = getShopPrice();//判断商品是否全部选中booleanb = selectAll();adapterData.Data(v,shopPrice,b);}        });finalChildViewHolder finalHolder = holder;holder.zengjia.setOnClickListener(newView.OnClickListener() {@Overridepublic voidonClick(View v) {                List been =dataList.get(groupPosition);String num =finalHolder.number.getText().toString();inti = Integer.parseInt(num);++i;been.get(childPosition).setNumber(i +"");//计算选中的价格和数量String shopPrice = getShopPrice();//判断商品是否全部选中booleanb = selectAll();adapterData.Data(v,shopPrice,b);notifyDataSetChanged();}        });holder.jianshao.setOnClickListener(newView.OnClickListener() {@Overridepublic voidonClick(View v) {                List been =dataList.get(groupPosition);String num =finalHolder.number.getText().toString();inti = Integer.parseInt(num);if(i >1) {                    --i;}                been.get(childPosition).setNumber(i +"");//计算选中的价格和数量String shopPrice = getShopPrice();//判断商品是否全部选中booleanb = selectAll();adapterData.Data(v,shopPrice,b);notifyDataSetChanged();}        });holder.number.setText(dataList.get(groupPosition).get(childPosition).getNumber().toString());holder.ck.setChecked(childList.get(groupPosition).get(childPosition));returnconvertView;}@Overridepublic booleanisChildSelectable(intgroupPosition, intchildPosition) {return false;}classGroupViewHolder {        TextViewtv;CheckBoxck;}classChildViewHolder {        TextViewtv;CheckBoxck;TextViewjianshao;TextViewzengjia;TextViewnumber;}//设置二级列表的选中状态,根据一级列表的状态来改变private voidsetChildCheckAll() {for(inti =0;i integerBooleanHashMap1 =childList.get(i);Set> entries = integerBooleanHashMap1.entrySet();for(Map.Entry entry : entries) {                entry.setValue(groupHashMap.get(i));}        }        notifyDataSetChanged();}//判断二级列表是否全部选中private voidChildisChecked(intgroupPosition) {booleanischecked =true;HashMap hashMap =childList.get(groupPosition);Set> entries = hashMap.entrySet();for(Map.Entry entry : entries) {if(!entry.getValue()) {                ischecked =false;break;}        }groupHashMap.put(groupPosition,ischecked);notifyDataSetChanged();}//全选public voidcheckAllShop(booleanchecked) {        Set> entries =groupHashMap.entrySet();for(Map.Entry entry : entries) {            entry.setValue(checked);}//调用让二级列表全选的方法setChildCheckAll();notifyDataSetChanged();}//计算价格publicStringgetShopPrice() {intprice =0;intnumber =0;for(inty =0;y integerBooleanHashMap1 =childList.get(y);Set> entries = integerBooleanHashMap1.entrySet();for(Map.Entry entry : entries) {if(entry.getValue()) {                    Bean bean =dataList.get(y).get(entry.getKey());price += Integer.parseInt(bean.getPrice()) * Integer.parseInt(bean.getNumber());number += Integer.parseInt(bean.getNumber());}            }        }returnprice +","+ number;}//编辑一级和二级列表,如果全部选中,全选按钮也选中public booleanselectAll() {booleanisChecked =true;for(inty =0;y hashMap =childList.get(y);Set> entries = hashMap.entrySet();for(Map.Entry entry : entries) {if(!entry.getValue()) {                    isChecked =false;break;}            }        }returnisChecked;}privateAdapterDataadapterData;public interfaceAdapterData {voidData(View v,String str, booleanb);}public voidgetAdapterData(AdapterData adapterData) {this.adapterData= adapterData;}}

bean

public classBean {privateStringprice;privateStringnumber;publicBean(String price,String number) {this.price= price;this.number= number;}publicStringgetPrice() {returnprice;}public voidsetPrice(String price) {this.price= price;}publicStringgetNumber() {returnnumber;}public voidsetNumber(String number) {this.number= number;}}

//MainActivity.xml

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容