效果图



主布局
<?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"android:orientation="vertical"tools:context=".wight.MainActivity"><ExpandableListViewandroid:id="@+id/list_car"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1" /><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="50dp"><CheckBoxandroid:id="@+id/check_all"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_marginLeft="10dp"android:text="全选" /><!--android:layout_centerVertical="true"表示在此布局中(高)居中显示--><TextViewandroid:id="@+id/goods_sum_price"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_marginLeft="20dp"android:layout_toRightOf="@+id/check_all"android:textColor="#00f"android:text="价格:" /><Buttonandroid:id="@+id/but_jie"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_toRightOf="@+id/goods_sum_price"android:layout_marginLeft="200dp"android:text="结算"/></RelativeLayout></LinearLayout>
add_stu.xml
<?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="wrap_content"android:background="#ddd"android:orientation="horizontal"android:padding="10dp"><CheckBoxandroid:id="@+id/child_check"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="15dp" /><ImageViewandroid:id="@+id/image_cc"android:layout_width="100dp"android:layout_height="wrap_content"android:layout_toRightOf="@+id/child_check"android:src="@mipmap/ic_launcher" /><TextViewandroid:id="@+id/text_ttt"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="-3dp"android:layout_toRightOf="@+id/image_cc"android:padding="10dp"android:text="aa" /><TextViewandroid:id="@+id/text_price"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/text_ttt"android:layout_marginTop="10dp"android:layout_toRightOf="@+id/image_cc"android:padding="3dp"android:text="价格" /><bawei.com.yuekaodemo3.wight.MyLayoutandroid:id="@+id/add_sub"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_alignParentBottom="true"android:layout_marginBottom="20dp"android:layout_marginRight="20dp">
</bawei.com.yuekaodemo3.wight.MyLayout></RelativeLayout>
child_item.xml
<?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="match_parent"android:orientation="vertical"><CheckBoxandroid:id="@+id/g_checkbox"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="CheckBox"android:focusable="false"/></LinearLayout>
group_item.xml
<?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="match_parent"android:orientation="horizontal"><TextViewandroid:id="@+id/add_jian"android:layout_width="30dp"android:layout_height="30dp"android:focusable="false"android:gravity="center"android:text="-"android:textSize="22sp" /><TextViewandroid:id="@+id/num"android:layout_width="wrap_content"android:layout_height="30dp"android:focusable="false"android:gravity="center"android:text="1000"android:textSize="22sp" /><TextViewandroid:id="@+id/add_jia"android:layout_width="30dp"android:layout_height="30dp"android:focusable="false"android:gravity="center"android:text="+"android:textSize="22sp" /></LinearLayout>
adapter
package bawei.com.yuekaodemo3.adapter;import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;import com.bumptech.glide.Glide;import java.util.ArrayList;
import java.util.List;import bawei.com.yuekaodemo3.R;
import bawei.com.yuekaodemo3.bean.Goods;
import bawei.com.yuekaodemo3.bean.Result;
import bawei.com.yuekaodemo3.bean.Shop;
import bawei.com.yuekaodemo3.wight.MyLayout;public class CarAdapter extends BaseExpandableListAdapter {private List<Shop> mList = new ArrayList<>();private TotalPriceLister priceLister;//实例化自定义接口public void setTotalPriceLister(TotalPriceLister totalPriceLister) {this.priceLister = totalPriceLister;}// 点击全选 则调用次方法public void checkAll(boolean is) {for (int i = 0; i < mList.size(); i++) {Shop shop = mList.get(i);shop.setCheck(is);// 设置for (int j = 0; j < shop.getList().size(); j++) {Goods goods = shop.getList().get(j);goods.setSelected(is?1:0);//设置选中状态}}notifyDataSetChanged();// 刷新数据calculatePrice();//计算总价}// 自定义接口public interface TotalPriceLister{void totalprice(double totalprice);void success(List<Shop> data);void fail(Result result);}public void addAll(List<Shop> list){if (list != null) {mList.addAll(list);// 添加数据}}@Overridepublic int getGroupCount() {return mList.size();}@Overridepublic int getChildrenCount(int groupPosition) {return mList.get(groupPosition).getList().size();}@Overridepublic Object getGroup(int groupPosition) {return mList.get(groupPosition);}@Overridepublic Object getChild(int groupPosition, int childPosition) {return mList.get(groupPosition).getList().get(childPosition);}@Overridepublic long getGroupId(int groupPosition) {return groupPosition;}@Overridepublic long getChildId(int groupPosition, int childPosition) {return childPosition;}@Overridepublic boolean hasStableIds() {return false;}@Overridepublic View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {GroupHolder groupHolder = null;if (convertView == null) {convertView = View.inflate(parent.getContext(), R.layout.child_item, null);groupHolder = new GroupHolder();groupHolder.checkBox = convertView.findViewById(R.id.g_checkbox);convertView.setTag(groupHolder);} else {groupHolder = (GroupHolder) convertView.getTag();}final Shop shop = mList.get(groupPosition);// 得到此商铺groupHolder.checkBox.setText(shop.getSellerName());// 设置商品的名字groupHolder.checkBox.setChecked(shop.isCheck());// 这是商铺的选中状态groupHolder.checkBox.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 防治点击事件与选中发生冲突CheckBox checkBox= (CheckBox) v;shop.setCheck(checkBox.isChecked());// 设置商品的选中状态List<Goods> goodsList = mList.get(groupPosition).getList();// 得到商品的信息for (int i = 0; i < goodsList.size(); i++) {goodsList.get(i).setSelected(checkBox.isChecked() ? 1 : 0);// 设置是否选中}// 更新适配器notifyDataSetChanged();// 计算价格calculatePrice();}});return convertView;}/*** 计算总价格*/private void calculatePrice() {double totalprice=0;for (int i = 0; i < mList.size(); i++) {Shop shop = mList.get(i);for (int j = 0; j < shop.getList().size(); j++) {Goods goods = shop.getList().get(j);if (goods.getSelected() == 1) {// 是选中状态的话则计算进去totalprice = totalprice +goods.getNum()*goods.getPrice();}}}// 判断if (priceLister != null) {priceLister.totalprice(totalprice);// 将值利用接口回调传回Activity进行展示}}class GroupHolder {CheckBox checkBox;// 这是二级列表的第一级}@Overridepublic View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {ChildHolder childHolder=null;if (convertView == null) {childHolder = new ChildHolder();convertView = View.inflate(parent.getContext(),R.layout.add_stu,null);childHolder.addSub= convertView.findViewById(R.id.add_sub);childHolder.check = convertView.findViewById(R.id.child_check);childHolder.image = convertView.findViewById(R.id.image_cc);childHolder.price = convertView.findViewById(R.id.text_price);childHolder.text = convertView.findViewById(R.id.text_ttt);convertView.setTag(childHolder);}else{childHolder= (ChildHolder) convertView.getTag();}// 得到单个商品final Goods goods = mList.get(groupPosition).getList().get(childPosition);childHolder.text.setText(goods.getTitle());childHolder.price.setText(goods.getPrice()+"");// 单价// 点击选中,计算价格childHolder.check.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 防治点击事件与选中发生冲突CheckBox checkBox = (CheckBox) v;goods.setSelected(checkBox.isChecked()?1:0);//设置此商品是否选中// 计算价格calculatePrice();}});// 设置商品的复选框if (goods.getSelected()==0) {childHolder.check.setChecked(false);}else{childHolder.check.setChecked(true);}//设置图片String images = goods.getImages();//分割String[] split = images.split("\\|");if (split .length>0) {Glide.with(parent.getContext()).load(split[0].replace("https","http")).into(childHolder.image);}// 设置次商品的数量childHolder.addSub.setCount(goods.getNum());childHolder.addSub.setAddSubListener(new MyLayout.AddSubListener() {@Overridepublic void addSub(int number) {goods.setNum(number);//设置数量calculatePrice();// 计算价格}});return convertView;}class ChildHolder {CheckBox check;TextView text;TextView price;ImageView image;MyLayout addSub;}@Overridepublic boolean isChildSelectable(int groupPosition, int childPosition) {return false;}}
bean
package bawei.com.yuekaodemo3.bean;public class Goods {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;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;}
}
package bawei.com.yuekaodemo3.bean;public class Result<T> {int code;String msg;T data;public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public T getData() {return data;}public void setData(T data) {this.data = data;}}
package bawei.com.yuekaodemo3.bean;import java.util.List;public class Shop {List<Goods> list;String sellerName;String sellerid;// 自己添加的 为了判断复选框是否选中boolean check;public void setCheck(boolean check) {this.check = check;}public boolean isCheck() {return check;}public List<Goods> getList() {return list;}public void setList(List<Goods> list) {this.list = list;}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;}}
model
package bawei.com.yuekaodemo3.model;import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;import java.lang.reflect.Type;
import java.util.List;import bawei.com.yuekaodemo3.bean.Result;
import bawei.com.yuekaodemo3.bean.Shop;public class CartModel {private static Result result;public static Result goodsList() {// 可以调用okhttp  因接口容易崩溃直接将数据取了出来
//        String resultString = HttpUtils.get("http://www.zhaoapi.cn/product/getCarts?uid=71");String resultString = "{\"msg\":\"请求成功\",\"code\":\"0\",\"data\":[{\"list\":[],\"sellerName\":\"\",\"sellerid\":\"0\"},{\"list\":[{\"bargainPrice\":111.99,\"createtime\":\"2017-10-14T21:48:08\",\"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\":11,\"pid\":11,\"price\":8989.0,\"pscid\":1,\"selected\":0,\"sellerid\":4,\"subhead\":\"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下\",\"title\":\"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g\"}],\"sellerName\":\"商家4\",\"sellerid\":\"4\"},{\"list\":[{\"bargainPrice\":111.99,\"createtime\":\"2017-10-03T23:43:53\",\"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\":13,\"price\":465.0,\"pscid\":1,\"selected\":0,\"sellerid\":6,\"subhead\":\"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下\",\"title\":\"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g\"}],\"sellerName\":\"商家6\",\"sellerid\":\"6\"},{\"list\":[{\"bargainPrice\":11800.0,\"createtime\":\"2017-10-14T21:38:26\",\"detailUrl\":\"https:\\/\\/mitem.jd.hk\\/ware\\/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1\",\"images\":\"https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t6130\\/97\\/1370670410\\/180682\\/1109582a\\/593276b1Nd81fe723.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t5698\\/110\\/2617517836\\/202970\\/c9388feb\\/593276b7Nbd94ef1f.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t5698\\/110\\/2617517836\\/202970\\/c9388feb\\/593276b7Nbd94ef1f.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t5815\\/178\\/2614671118\\/51656\\/7f52d137\\/593276c7N107b725a.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t5878\\/60\\/2557817477\\/30873\\/4502b606\\/593276caN5a7d6357.jpg!q70.jpg\",\"num\":3,\"pid\":63,\"price\":10000.0,\"pscid\":40,\"selected\":0,\"sellerid\":7,\"subhead\":\"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)\",\"title\":\"全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5\\/8G\\/256G\"}],\"sellerName\":\"商家7\",\"sellerid\":\"7\"},{\"list\":[{\"bargainPrice\":399.0,\"createtime\":\"2017-10-03T23:53:28\",\"detailUrl\":\"https:\\/\\/item.m.jd.com\\/product\\/1439822107.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends\",\"images\":\"https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t5887\\/201\\/859509257\\/69994\\/6bde9bf6\\/59224c24Ne854e14c.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t5641\\/233\\/853609022\\/57374\\/5c73d281\\/59224c24N3324d5f4.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t5641\\/233\\/853609022\\/57374\\/5c73d281\\/59224c24N3324d5f4.jpg!q70.jpg\",\"num\":1,\"pid\":87,\"price\":888.0,\"pscid\":85,\"selected\":0,\"sellerid\":8,\"subhead\":\"满2件,总价打6.50折\",\"title\":\"Gap男装 休闲舒适简约水洗五袋直筒长裤紧身牛仔裤941825 深灰色 33\\/32(175\\/84A)\"},{\"bargainPrice\":3455.0,\"createtime\":\"2017-10-03T23:53:28\",\"detailUrl\":\"https:\\/\\/item.m.jd.com\\/product\\/12224420750.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends\",\"images\":\"https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t9106\\/106\\/1785172479\\/537280\\/253bc0ab\\/59bf78a7N057e5ff7.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t9106\\/106\\/1785172479\\/537280\\/253bc0ab\\/59bf78a7N057e5ff7.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t8461\\/5\\/1492479653\\/68388\\/7255e013\\/59ba5e84N91091843.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t8461\\/5\\/1492479653\\/68388\\/7255e013\\/59ba5e84N91091843.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t8803\\/356\\/1478945529\\/489755\\/2a163ace\\/59ba5e84N7bb9a666.jpg!q70.jpg\",\"num\":2,\"pid\":52,\"price\":666.0,\"pscid\":39,\"selected\":0,\"sellerid\":8,\"subhead\":\"【现货新品抢购】全面屏2.0震撼来袭,骁龙835处理器,四曲面陶瓷机\",\"title\":\"小米(MI) 小米MIX2 手机 黑色 全网通 (6GB+64GB)【标配版】\"}],\"sellerName\":\"商家8\",\"sellerid\":\"8\"},{\"list\":[{\"bargainPrice\":11800.0,\"createtime\":\"2017-10-14T21:48:08\",\"detailUrl\":\"https:\\/\\/mitem.jd.hk\\/ware\\/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1\",\"images\":\"https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t6130\\/97\\/1370670410\\/180682\\/1109582a\\/593276b1Nd81fe723.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t5698\\/110\\/2617517836\\/202970\\/c9388feb\\/593276b7Nbd94ef1f.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t5698\\/110\\/2617517836\\/202970\\/c9388feb\\/593276b7Nbd94ef1f.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t5815\\/178\\/2614671118\\/51656\\/7f52d137\\/593276c7N107b725a.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t5878\\/60\\/2557817477\\/30873\\/4502b606\\/593276caN5a7d6357.jpg!q70.jpg\",\"num\":3,\"pid\":65,\"price\":12000.0,\"pscid\":40,\"selected\":0,\"sellerid\":9,\"subhead\":\"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)\",\"title\":\"全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5\\/8G\\/256G\"},{\"bargainPrice\":2999.0,\"createtime\":\"2017-10-14T21:48:08\",\"detailUrl\":\"https:\\/\\/item.m.jd.com\\/product\\/2385655.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends\",\"images\":\"https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t2068\\/298\\/2448145915\\/157953\\/7be197df\\/56d51a42Nd86f1c8e.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t2437\\/128\\/1687178395\\/117431\\/bcc190c1\\/56d3fcbaNb2963d21.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t2467\\/222\\/2263160610\\/95597\\/927b8a2f\\/56d3eafeNdecebeb6.jpg!q70.jpg\",\"num\":2,\"pid\":53,\"price\":777.0,\"pscid\":39,\"selected\":0,\"sellerid\":9,\"subhead\":\"Super AMOLED三星双曲面2K 屏,支持无线充电!\",\"title\":\"三星 Galaxy S7 edge(G9350)4GB+32GB 铂光金 移动联通电信4G手机 双卡双待\"},{\"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\":16,\"price\":199.0,\"pscid\":1,\"selected\":0,\"sellerid\":9,\"subhead\":\"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下\",\"title\":\"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g\"}],\"sellerName\":\"商家9\",\"sellerid\":\"9\"},{\"list\":[{\"bargainPrice\":11800.0,\"createtime\":\"2017-10-14T21:38:26\",\"detailUrl\":\"https:\\/\\/mitem.jd.hk\\/ware\\/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1\",\"images\":\"https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t6130\\/97\\/1370670410\\/180682\\/1109582a\\/593276b1Nd81fe723.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t5698\\/110\\/2617517836\\/202970\\/c9388feb\\/593276b7Nbd94ef1f.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t5698\\/110\\/2617517836\\/202970\\/c9388feb\\/593276b7Nbd94ef1f.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t5815\\/178\\/2614671118\\/51656\\/7f52d137\\/593276c7N107b725a.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t5878\\/60\\/2557817477\\/30873\\/4502b606\\/593276caN5a7d6357.jpg!q70.jpg\",\"num\":3,\"pid\":66,\"price\":13000.0,\"pscid\":40,\"selected\":0,\"sellerid\":10,\"subhead\":\"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)\",\"title\":\"全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5\\/8G\\/256G\"},{\"bargainPrice\":159.0,\"createtime\":\"2017-10-14T21:49:15\",\"detailUrl\":\"https:\\/\\/item.m.jd.com\\/product\\/5061723.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends\",\"images\":\"https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t8716\\/197\\/1271594444\\/173291\\/2f40bb4f\\/59b743bcN8509428e.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t8347\\/264\\/1286771527\\/92188\\/5cf5ec04\\/59b7420fN65378e9e.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t7363\\/165\\/3000956253\\/190883\\/179a372\\/59b743bfNd0c79d93.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t7399\\/112\\/2935531768\\/183594\\/b77c7d4a\\/59b7441aNc3d40133.jpg!q70.jpg\",\"num\":5,\"pid\":99,\"price\":2100.0,\"pscid\":112,\"selected\":0,\"sellerid\":10,\"subhead\":\"针织针织闪闪闪亮你的眼\",\"title\":\"维迩旎 2017秋冬新款长袖针织连衣裙韩版气质中长款名媛包臀A字裙 zx179709 黑色 XL\"},{\"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\":2,\"pid\":17,\"price\":299.0,\"pscid\":1,\"selected\":0,\"sellerid\":10,\"subhead\":\"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下\",\"title\":\"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g\"}],\"sellerName\":\"商家10\",\"sellerid\":\"10\"},{\"list\":[{\"bargainPrice\":159.0,\"createtime\":\"2017-10-14T21:49:15\",\"detailUrl\":\"https:\\/\\/item.m.jd.com\\/product\\/5061723.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends\",\"images\":\"https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t8716\\/197\\/1271594444\\/173291\\/2f40bb4f\\/59b743bcN8509428e.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t8347\\/264\\/1286771527\\/92188\\/5cf5ec04\\/59b7420fN65378e9e.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t7363\\/165\\/3000956253\\/190883\\/179a372\\/59b743bfNd0c79d93.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t7399\\/112\\/2935531768\\/183594\\/b77c7d4a\\/59b7441aNc3d40133.jpg!q70.jpg\",\"num\":1,\"pid\":100,\"price\":2200.0,\"pscid\":112,\"selected\":0,\"sellerid\":11,\"subhead\":\"针织针织闪闪闪亮你的眼\",\"title\":\"维迩旎 2017秋冬新款长袖针织连衣裙韩版气质中长款名媛包臀A字裙 zx179709 黑色 XL\"},{\"bargainPrice\":22.9,\"createtime\":\"2017-10-14T21:38:26\",\"detailUrl\":\"https:\\/\\/item.m.jd.com\\/product\\/2542855.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends\",\"images\":\"https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t1930\\/284\\/2865629620\\/390243\\/e3ade9c4\\/56f0a08fNbd3a1235.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t2137\\/336\\/2802996626\\/155915\\/e5e90d7a\\/56f0a09cN33e01bd0.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t1882\\/31\\/2772215910\\/389956\\/c8dbf370\\/56f0a0a2Na0c86ea6.jpg!q70.jpg|https:\\/\\/m.360buyimg.com\\/n0\\/jfs\\/t2620\\/166\\/2703833710\\/312660\\/531aa913\\/57709035N33857877.jpg!q70.jpg\",\"num\":5,\"pid\":34,\"price\":9.0,\"pscid\":2,\"selected\":0,\"sellerid\":11,\"subhead\":\"三只松鼠零食特惠,专区满99减50,满199减100,火速抢购》\",\"title\":\"三只松鼠 坚果炒货 零食奶油味 碧根果225g\\/袋\"},{\"bargainPrice\":111.99,\"createtime\":\"2017-10-14T21:48:08\",\"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\":2,\"pid\":18,\"price\":399.0,\"pscid\":1,\"selected\":0,\"sellerid\":11,\"subhead\":\"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下\",\"title\":\"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g\"}],\"sellerName\":\"商家11\",\"sellerid\":\"11\"},{\"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\":3,\"pid\":19,\"price\":499.0,\"pscid\":1,\"selected\":0,\"sellerid\":12,\"subhead\":\"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下\",\"title\":\"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g\"}],\"sellerName\":\"商家12\",\"sellerid\":\"12\"},{\"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\":3,\"pid\":1,\"price\":118.0,\"pscid\":1,\"selected\":0,\"sellerid\":17,\"subhead\":\"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下\",\"title\":\"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g\"}],\"sellerName\":\"商家17\",\"sellerid\":\"17\"}]}";try {Gson gson = new Gson();Type type = new TypeToken<Result<List<Shop>>>() {}.getType();result = gson.fromJson(resultString, type);return result;} catch (Exception e) {}return result;}}
presenter
package bawei.com.yuekaodemo3.presenter;import android.os.Handler;
import android.os.Looper;
import android.os.Message;import bawei.com.yuekaodemo3.bean.Result;
import bawei.com.yuekaodemo3.view.DataCall;public abstract class BasePresenter {DataCall dataCall;public BasePresenter(DataCall dataCall){this.dataCall = dataCall;}Handler mHandler = new Handler(Looper.getMainLooper()) {@Overridepublic void handleMessage(Message msg) {Result result = (Result) msg.obj;if (result.getCode()==0){dataCall.success(result.getData());}else{dataCall.fail(result);}}};public void requestData(final Object...args){new Thread(new Runnable() {@Overridepublic void run() {Message message = mHandler.obtainMessage();message.obj = getData(args);mHandler.sendMessage(message);}}).start();}protected abstract Result getData(Object...args);public void unBindCall(){this.dataCall = null;//防治内存泄露}}
package bawei.com.yuekaodemo3.presenter;import bawei.com.yuekaodemo3.bean.Result;
import bawei.com.yuekaodemo3.model.CartModel;
import bawei.com.yuekaodemo3.view.DataCall;public class CartPresenter extends BasePresenter {public CartPresenter(DataCall dataCall) {super(dataCall);}@Overrideprotected Result getData(Object... args) {Result result = CartModel.goodsList();//调用网络请求获取数据return result;}}
utils
package bawei.com.yuekaodemo3.utils;import java.io.IOException;
import java.util.concurrent.TimeUnit;import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;public class HttpUtils {public static String get(String urlString) {// 添加日志拦截器HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();OkHttpClient okHttpClient = new OkHttpClient.Builder().connectTimeout(20, TimeUnit.SECONDS)//连接超时.readTimeout(20, TimeUnit.SECONDS)//读取超时.callTimeout(20, TimeUnit.SECONDS)//呼叫超时.addInterceptor(loggingInterceptor)// 日志拦截器.build();Request request = new Request.Builder().url(urlString).get().build();try {Response response = okHttpClient.newCall(request).execute();return response.body().string();} catch (IOException e) {e.printStackTrace();}return "";}//okhttp使用单例模式private static OkHttpClient singleton;//非常有必要,要不此类还是可以被new,但是无法避免反射,好恶心private HttpUtils(){}public static OkHttpClient getInstance() {if (singleton == null){synchronized (HttpUtils.class){if (singleton == null){singleton = new OkHttpClient();}}}return singleton;}}
view
package bawei.com.yuekaodemo3.view;import bawei.com.yuekaodemo3.bean.Result;public interface DataCall<T> {// 成功void success(T data);// 失败void fail(Result result);
}
wight
package bawei.com.yuekaodemo3.wight;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ExpandableListView;
import android.widget.TextView;
import android.widget.Toast;import java.util.List;import bawei.com.yuekaodemo3.R;
import bawei.com.yuekaodemo3.adapter.CarAdapter;
import bawei.com.yuekaodemo3.bean.Result;
import bawei.com.yuekaodemo3.bean.Shop;
import bawei.com.yuekaodemo3.view.DataCall;
import bawei.com.yuekaodemo3.presenter.CartPresenter;public class MainActivity extends AppCompatActivity implements CarAdapter.TotalPriceLister, DataCall<List<Shop>> {private TextView mSunPirce;private CheckBox mCheck_All;Button but_jie;private CarAdapter carAdapter;private ExpandableListView mGoodsList;private CartPresenter cartPresenter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 找到控件mSunPirce = findViewById(R.id.goods_sum_price);mCheck_All = findViewById(R.id.check_all);but_jie=findViewById(R.id.but_jie);mGoodsList = findViewById(R.id.list_car);// 没有箭头mGoodsList.setGroupIndicator(null);// 让group不能被点击mGoodsList.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {@Overridepublic boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {return true;}});//点击全选按钮mCheck_All.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {carAdapter.checkAll(isChecked);//全部选中}});// 得到适配器对象carAdapter = new CarAdapter();carAdapter.setTotalPriceLister(this);// 回调总金额// 设置适配器mGoodsList.setAdapter(carAdapter);cartPresenter = new CartPresenter(this);// 调用P层cartPresenter.requestData();// 使用MVP模式}@Overridepublic void totalprice(double totalprice) {// 设置总金额mSunPirce.setText(String.valueOf(totalprice));}@Overridepublic void success(List<Shop> data) {// 添加数据carAdapter.addAll(data);// 默认展开 所有数据int size = data.size();for (int i = 0; i < size; i++) {mGoodsList.expandGroup(i);// 展开}// 更新数据carAdapter.notifyDataSetChanged();}@Overridepublic void fail(Result result) {cartPresenter.unBindCall();// 防治内存泄露Toast.makeText(this, "" + result.getMsg(), Toast.LENGTH_SHORT).show();}}
package bawei.com.yuekaodemo3.wight;import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;import bawei.com.yuekaodemo3.R;public class MyLayout extends LinearLayout implements View.OnClickListener{private TextView jian;private TextView jia;private TextView num;private AddSubListener addSubListener;// 实例化接口的变量public void setAddSubListener(AddSubListener addSubListener) {this.addSubListener = addSubListener;}public MyLayout(Context context) {super(context);initView();}public MyLayout(Context context, AttributeSet attrs) {super(context, attrs);initView();}public MyLayout(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);initView();}private void initView() {
//        第三个参数写成thisView view = View.inflate(getContext(), R.layout.group_item,this);jian = view.findViewById(R.id.add_jian);jia = view.findViewById(R.id.add_jia);num = view.findViewById(R.id.num);jia.setOnClickListener(this);jian.setOnClickListener(this);}@Overridepublic void onClick(View v) {// 得到数量的值int number = Integer.parseInt(num.getText().toString());switch (v.getId()){case R.id.add_jia:number++;num.setText(number+"");break;case R.id.add_jian:if (number == 0) {Toast.makeText(getContext(), "数量不可小于0", Toast.LENGTH_SHORT).show();return;}number--;num.setText(number+"");break;}if (addSubListener!=null) {addSubListener.addSub(number);}}public void setCount(int count) {num.setText(count+"");}// 自定义接口public interface AddSubListener{void addSub(int number);}}
依赖
implementation 'com.google.code.gson:gson:2.8.5'implementation 'com.squareup.okhttp3:okhttp:3.12.0'implementation 'com.github.bumptech.glide:glide:4.8.0'implementation 'com.squareup.okhttp3:logging-interceptor:3.12.0'

mvp+ExpandableListView二级列表+全选和全不选+单价合计相关推荐

  1. Android ExpandableListView (二级列表)

    ExpandableListView是android中可以实现下滑子菜单效果的一个控件 在布局文件(layout)目录下创建三个新的 .xml 文件(android xml layout file), ...

  2. RecycleView 二级列表(多级列表)

    RecycleView实现二级列表(可以实现多级列表) RecyclerView做的二级列表比官方的ExpandableListView二级列表效率高一些貌似 1.自己的Adapter继承Recycl ...

  3. vue 多层双层全选_vue多级复杂列表展开/折叠及全选/分组全选实现

    首先,来看下效果图 在线体验地址:https://hxkj.vip/demo/multipleList/.温馨提示,打开之后按F12,使用手机模式食用,口味更佳! 可以看出,这个列表有三种展现形式: ...

  4. 全选和全不选(管理员列表)----html文件

    代码功能: 对每个选项进行选择,如果中间四个全选则自动定义为全选,如果点击删除选定按钮,则会撤销全部选择. 界面: HTML代码: <!DOCTYPE html> <html> ...

  5. php 列表全选,php处理全选与全不选的实例代码

    php处理复选框checkbox的全选与全不选. 代码: 复制代码 代码示例: php处理复选框checkbox的全选与全不选-www.jbxue.com function check_all() { ...

  6. html页面列表一键全选选,JQuery控制Html页面Checkbox全选和全不选

    说明:Checkbox的全选和全不选应用较为普遍,网上的资料大多数都是原生JS的实现方式,大家你超我,我超你,没意思!今天用JQuery试着写了一下,采用了新的角度实现,供大家参考一下,直接上代码,解 ...

  7. MVP实现购物车(二级列表),删除结算功能,拦截器+封装okHttp

    图片 依赖 compile 'com.squareup.okhttp3:okhttp:3.9.1'compile 'com.google.code.gson:gson:2.8.+'compile 'c ...

  8. android购物车二级列表实现+MVP+Okhttp

    //主界面 package com.example.shop;import android.os.Bundle; import android.os.Handler; import android.o ...

  9. 二级列表ExpandableListView的CheckBox使用

    首先要在数据的一级和二级列表中各添加一个boolean数据 在Activity中添加点击组条目选中和不选中 //一级列表 list.get(i).setChtenild(!list.get(i).is ...

最新文章

  1. 祛除雀斑的健康方法 - 健康程序员,至尚生活!
  2. 基础才是重中之重~方法override详解
  3. web 向java_Java web基础
  4. 配置一个Servlet可以被一个(指定的开头链接,后自定义)访问
  5. sql 除法_七天学会SQL-04SQL复杂查询
  6. 解决 mysql 插入数据报错: Cannot add or update a child row: a foreign key constraint fails
  7. gitlab更新配置无效_Gitlab 快速的搭建
  8. hihoCoder-1037-数字三角形(dp)
  9. c语言开发gc,GC的基本原理
  10. 一张图说明白数据安全管理体系的规划
  11. Tslib移植与分析
  12. 打卡记录根据排班表每人每日排班上下班时间自动获取结果打卡记录是属于那是区间
  13. android 摄像头检测工具,检摄app下载-检摄软件(检测摄像头)下载 v1.0.7安卓版_5577安卓网...
  14. Unity 碰撞位置
  15. 干净卸载 Loadrunner  win7
  16. 20款优秀的移动产品原型和线框图设计工具
  17. 支持javascript的ppt软件_javascript制作幻灯片
  18. 【阿里云】第一次如何用MobaXterm/xshell等软件登录阿里云服务器
  19. 【微信小程序】wx:if与hidden的区别
  20. “无法删除数据库,因为该数据库当前正在使用“问题解决

热门文章

  1. 关于职业素养的一些认识
  2. mysql 淘宝数据分析
  3. 什么是网络安全?为什么要学网络安全?如何学习网络安全?
  4. githua 账号合并_03 注册github并命令行更新、合并以及提交代码
  5. 计算机基础知识考刻答题,语文万能答题公式,记好它考试不用愁!(建议收藏)...
  6. 计算机制作表格的结论,计算机基础实验报告电子表格处理-20210320050712.docx-原创力文档...
  7. python udp伪造ip_伪造UDP数据包
  8. mysql中怎么实现Apriori_关联规则Apriori算法及实现(python)
  9. python去掉人像白边_使用matplotlib而不保存imag时删除图像周围的白色边框
  10. 自建es集群数据迁移同步到腾讯云