当前位置: 移动技术网 > IT编程>开发语言>Java > RxJava+Retrofit+Mvp实现购物车

RxJava+Retrofit+Mvp实现购物车

2019年07月19日  | 移动技术网IT编程  | 我要评论

小说活着就是恶心,柚子的作用,猎国记

本文实例为大家分享了rxjava retrofit实现购物车展示的具体代码,供大家参考,具体内容如下

先给大家展示一下效果图

简单的购物车

框架结构:

1.项目框架:mvp,图片加载用fresco,网络请求用okhttp+retrofit实现(自己封装,加单例模式),
2.完成购物车数据添加(如果接口无数据,可用接口工具添加数据),
3.自定义view实现加减按钮,每次点击加减,item中的总数及总价要做出相应的改变。
4.当数量为1时,点击减号,数量不变,吐司提示用户最小数量为1。
5.底部总数及总价为所有item项中的总价及总数,每个item中数量价格的更改,底部总价总数要与之联动
6.实现单选反选全选功能,首次进入默认全选,item未选中时总数及总价不计入底部数据,改变选中状态时,底部总数及总价能做出正确修改
7.点击删除按钮,删除item,底部总数及总价能做出正确修改,接口数据删除。

添加所需要的依赖和联网权限

compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'//retrofit2所需要的包
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'//converterfactory的gson依赖包
compile 'com.squareup.retrofit2:converter-scalars:2.0.0-beta4'//converterfactory的string依赖包
compile 'io.reactivex.rxjava2:rxjava:2.1.3'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
compile 'de.greenrobot:eventbus:3.0.0-beta1'
compile 'com.facebook.fresco:fresco:0.11.0'
<uses-permission android:name="android.permission.internet" />

在使用mvp模式前先分包

net包

api

public class api {
 public static string host="http://120.27.23.105/product/";
}

serviceapi

public interface serviceapi {
 @get("getproductdetail")
 flowable<xqbean> getxq(@query("pid")int pid, @query("source")string str);
 @get("addcart")
 flowable<addcart> getmsg(@query("uid")int uid, @query("pid")int pid, @query("source")string str);
 @get("getcarts")
 flowable<cartbean> getcart(@query("uid")int uid, @query("source")string str);
}

成功的接口

public interface onnetlisenter<t> {
 void success(t t);
}

retrofit的封装

public class retrofithepler {
 public static okhttpclient okhttpclient;
 public static serviceapi serviceapi;
 /**
 * 优先执行
 */
 static {
 getokhttpclient();
 }
 public static okhttpclient getokhttpclient(){
 if(okhttpclient==null){
 synchronized (okhttpclient.class){
 if(okhttpclient==null){
  okhttpclient=new okhttpclient();
 }
 }
 }
 return okhttpclient;
 }
 public static serviceapi getserviceapi(){

 if(serviceapi==null){
 synchronized (okhttpclient.class){
 if(serviceapi==null){
  serviceapi=oncreate(serviceapi.class,api.host);
 }
 }
 }
 return serviceapi;
 }
 public static <t> t oncreate(class<t>tclass,string url){
 retrofit retrofit = new retrofit.builder()
 .baseurl(url)
 .addconverterfactory(gsonconverterfactory.create())
 .client(okhttpclient)
 .addcalladapterfactory(rxjava2calladapterfactory.create())
 //.addcalladapterfactory(rxjava2calladapterfactory.create())
 .build();
 return retrofit.create(tclass);
 }
}

bean包

详情页的bean类

public class xqbean {
 /**
 * msg :
 * seller : {"description":"我是商家2","icon":"http://120.27.23.105/images/icon.png","name":"商家2","productnums":999,"score":5,"sellerid":2}
 * code : 0
 * data : {"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","itemtype":2,"pid":9,"price":78.99,"pscid":1,"salenum":2356,"sellerid":2,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}
 */

 private string msg;
 private sellerbean seller;
 private string code;
 private databean data;

 public string getmsg() {
 return msg;
 }

 public void setmsg(string msg) {
 this.msg = msg;
 }

 public sellerbean getseller() {
 return seller;
 }

 public void setseller(sellerbean seller) {
 this.seller = seller;
 }

 public string getcode() {
 return code;
 }

 public void setcode(string code) {
 this.code = code;
 }

 public databean getdata() {
 return data;
 }

 public void setdata(databean data) {
 this.data = data;
 }

 public static class sellerbean {
 /**
 * description : 我是商家2
 * icon : http://120.27.23.105/images/icon.png
 * name : 商家2
 * productnums : 999
 * score : 5.0
 * sellerid : 2
 */

 private string description;
 private string icon;
 private string name;
 private int productnums;
 private double score;
 private int sellerid;

 public string getdescription() {
 return description;
 }

 public void setdescription(string description) {
 this.description = description;
 }

 public string geticon() {
 return icon;
 }

 public void seticon(string icon) {
 this.icon = icon;
 }

 public string getname() {
 return name;
 }

 public void setname(string name) {
 this.name = name;
 }

 public int getproductnums() {
 return productnums;
 }

 public void setproductnums(int productnums) {
 this.productnums = productnums;
 }

 public double getscore() {
 return score;
 }

 public void setscore(double score) {
 this.score = score;
 }

 public int getsellerid() {
 return sellerid;
 }

 public void setsellerid(int sellerid) {
 this.sellerid = sellerid;
 }
 }

 public static class databean {
 /**
 * 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
 * itemtype : 2
 * pid : 9
 * price : 78.99
 * pscid : 1
 * salenum : 2356
 * sellerid : 2
 * subhead : 每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下
 * title : 北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g
 */

 private double bargainprice;
 private string createtime;
 private string detailurl;
 private string images;
 private int itemtype;
 private int pid;
 private double price;
 private int pscid;
 private int salenum;
 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 getitemtype() {
 return itemtype;
 }

 public void setitemtype(int itemtype) {
 this.itemtype = itemtype;
 }

 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 getsalenum() {
 return salenum;
 }

 public void setsalenum(int salenum) {
 this.salenum = salenum;
 }

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

加入购物车的bean

public class addcart {
 private string msg;
 private string code;

 public string getmsg() {
 return msg;
 }

 public void setmsg(string msg) {
 this.msg = msg;
 }

 public string getcode() {
 return code;
 }

 public void setcode(string code) {
 this.code = code;
 }
}

商品类

public class cartbean {
 /**
 * msg : 请求成功
 * code : 0
 * data : [{"list":[{"bargainprice":22.9,"createtime":"2017-10-14t21:48:08","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":1,"pid":24,"price":288,"pscid":2,"selected":0,"sellerid":1,"subhead":"三只松鼠零食特惠,专区满99减50,满199减100,火速抢购》","title":"三只松鼠 坚果炒货 零食奶油味 碧根果225g/袋"},{"bargainprice":11800,"createtime":"2017-10-10t17:33:37","detailurl":"https://item.m.jd.com/product/4338107.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=qqfriends","images":"https://m.360buyimg.com/n0/jfs/t6700/155/2098998076/156185/6cf95035/595dd5a5nc3a7dab5.jpg!q70.jpg","num":2,"pid":57,"price":5199,"pscid":40,"selected":0,"sellerid":1,"subhead":"【i5 mx150 2g显存】全高清窄边框 8g内存 256固态硬盘 支持指纹识别 预装win10系统","title":"小米(mi)air 13.3英寸全金属轻薄笔记本(i5-7200u 8g 256g pcle ssd mx150 2g独显 fhd 指纹识别 win10)银\r\n"},{"bargainprice":99,"createtime":"2017-10-14t21:38:26","detailurl":"https://item.m.jd.com/product/4345173.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=qqfriends","images":"https://m.360buyimg.com/n0/jfs/t6037/35/2944615848/95178/6cd6cff0/594a3a10na4ec7f39.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6607/258/1025744923/75738/da120a2d/594a3a12ne3e6bc56.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6370/292/1057025420/64655/f87644e3/594a3a12n5b900606.jpg!q70.jpg","num":1,"pid":45,"price":2999,"pscid":39,"selected":0,"sellerid":1,"subhead":"高清双摄,就是清晰!2000+1600万高清摄像头,6gb大内存+高通骁龙835处理器,性能怪兽!","title":"一加手机5 (a5000) 6gb+64gb 月岩灰 全网通 双卡双待 移动联通电信4g手机"}],"sellername":"商家1","sellerid":"1"},{"list":[{"bargainprice":6666,"createtime":"2017-10-10t16:01:31","detailurl":"https://item.m.jd.com/product/5089273.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=qqfriends","images":"https://m.360buyimg.com/n0/jfs/t8284/363/1326459580/71585/6d3e8013/59b857f2n6ca75622.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9346/182/1406837243/282106/68af5b54/59b8480ane8af7f5c.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8434/54/1359766007/56140/579509d9/59b85801nfea207db.jpg!q70.jpg","num":1,"pid":46,"price":234,"pscid":39,"selected":0,"sellerid":2,"subhead":"【iphone新品上市】新一代iphone,让智能看起来更不一样","title":"apple iphone 8 plus (a1864) 64gb 金色 移动联通电信4g手机"}],"sellername":"商家2","sellerid":"2"},{"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":5,"pid":12,"price":256,"pscid":1,"selected":0,"sellerid":5,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}],"sellername":"商家5","sellerid":"5"},{"list":[{"bargainprice":11800,"createtime":"2017-10-03t23:53:28","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":1,"pid":62,"price":15999,"pscid":40,"selected":0,"sellerid":6,"subhead":"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)","title":"全球购 新款apple macbook pro 苹果笔记本电脑 银色vp2新13英寸bar i5/8g/256g"}],"sellername":"商家6","sellerid":"6"},{"list":[{"bargainprice":399,"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":86,"price":777,"pscid":85,"selected":0,"sellerid":7,"subhead":"满2件,总价打6.50折","title":"gap男装 休闲舒适简约水洗五袋直筒长裤紧身牛仔裤941825 深灰色 33/32(175/84a)"}],"sellername":"商家7","sellerid":"7"},{"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":12,"pid":1,"price":118,"pscid":1,"selected":0,"sellerid":17,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}],"sellername":"商家17","sellerid":"17"},{"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":4,"pid":2,"price":299,"pscid":1,"selected":0,"sellerid":18,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}],"sellername":"商家18","sellerid":"18"},{"list":[{"bargainprice":11800,"createtime":"2017-10-03t23:53:28","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":1,"pid":76,"price":37999.99,"pscid":40,"selected":0,"sellerid":20,"subhead":"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)","title":"全球购 新款apple macbook pro 苹果笔记本电脑 银色vp2新13英寸bar i5/8g/256g"}],"sellername":"商家20","sellerid":"20"},{"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":1,"pid":5,"price":88.99,"pscid":1,"selected":0,"sellerid":21,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}],"sellername":"商家21","sellerid":"21"}]
 */

 private string msg;
 private string code;
 private list<databean> data;

 public string getmsg() {
 return msg;
 }

 public void setmsg(string msg) {
 this.msg = msg;
 }

 public string getcode() {
 return code;
 }

 public void setcode(string code) {
 this.code = code;
 }

 public list<databean> getdata() {
 return data;
 }

 public void setdata(list<databean> data) {
 this.data = data;
 }

 public static class databean {
 /**
 * list : [{"bargainprice":22.9,"createtime":"2017-10-14t21:48:08","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":1,"pid":24,"price":288,"pscid":2,"selected":0,"sellerid":1,"subhead":"三只松鼠零食特惠,专区满99减50,满199减100,火速抢购》","title":"三只松鼠 坚果炒货 零食奶油味 碧根果225g/袋"},{"bargainprice":11800,"createtime":"2017-10-10t17:33:37","detailurl":"https://item.m.jd.com/product/4338107.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=qqfriends","images":"https://m.360buyimg.com/n0/jfs/t6700/155/2098998076/156185/6cf95035/595dd5a5nc3a7dab5.jpg!q70.jpg","num":2,"pid":57,"price":5199,"pscid":40,"selected":0,"sellerid":1,"subhead":"【i5 mx150 2g显存】全高清窄边框 8g内存 256固态硬盘 支持指纹识别 预装win10系统","title":"小米(mi)air 13.3英寸全金属轻薄笔记本(i5-7200u 8g 256g pcle ssd mx150 2g独显 fhd 指纹识别 win10)银\r\n"},{"bargainprice":99,"createtime":"2017-10-14t21:38:26","detailurl":"https://item.m.jd.com/product/4345173.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=qqfriends","images":"https://m.360buyimg.com/n0/jfs/t6037/35/2944615848/95178/6cd6cff0/594a3a10na4ec7f39.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6607/258/1025744923/75738/da120a2d/594a3a12ne3e6bc56.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6370/292/1057025420/64655/f87644e3/594a3a12n5b900606.jpg!q70.jpg","num":1,"pid":45,"price":2999,"pscid":39,"selected":0,"sellerid":1,"subhead":"高清双摄,就是清晰!2000+1600万高清摄像头,6gb大内存+高通骁龙835处理器,性能怪兽!","title":"一加手机5 (a5000) 6gb+64gb 月岩灰 全网通 双卡双待 移动联通电信4g手机"}]
 * sellername : 商家1
 * sellerid : 1
 */

 private string sellername;
 private string sellerid;
 private list<listbean> list;

 private boolean check;

 public boolean ischeck() {
 return check;
 }

 public void setcheck(boolean check) {
 this.check = check;
 }
 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;
 }

 public list<listbean> getlist() {
 return list;
 }

 public void setlist(list<listbean> list) {
 this.list = list;
 }

 public static class listbean {
 /**
 * bargainprice : 22.9
 * createtime : 2017-10-14t21:48:08
 * 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 : 1
 * pid : 24
 * price : 288.0
 * pscid : 2
 * selected : 0
 * sellerid : 1
 * subhead : 三只松鼠零食特惠,专区满99减50,满199减100,火速抢购》
 * title : 三只松鼠 坚果炒货 零食奶油味 碧根果225g/袋
 */

 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;
 private int cou=1;

 public int getcou() {
 return cou;
 }

 public void setcou(int cou) {
 this.cou = cou;
 }

 private boolean check;

 public boolean ischeck() {
 return check;
 }

 public void setcheck(boolean check) {
 this.check = check;
 }

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

app

public class myapp extends application{
 @override
 public void oncreate() {
 super.oncreate();

 fresco.initialize(this);
 }
}

view层

先写两个接口

public interface icart {
 void showlist(list<cartbean.databean> grouplist, list<list<cartbean.databean.listbean>> childlist);
}
public interface iview<t> {
 void showbean(t t);
 void showstr(string s);
}

主页面布局

<?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="com.bwie.zhangzhen20170108.mainactivity">

 <expandablelistview
 android:id="@+id/elv"
 android:layout_weight="1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />
 <linearlayout
 android:layout_weight="9"
 android:orientation="horizontal"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 <checkbox
 android:id="@+id/quanxuan"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />
 <textview
 android:text="全选"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />
 <linearlayout
 android:layout_marginleft="50dp"
 android:orientation="vertical"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content">
 <textview
 android:id="@+id/zongjia"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="总价:0.0"
 />
 <textview
 android:text="共0件商品"
 android:id="@+id/tv_count"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />

 </linearlayout>
 <textview
 android:text="去结算"
 android:background="#ffd82020"
 android:layout_marginleft="100dp"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />
 </linearlayout>

</linearlayout>

主页面

public class mainactivity extends appcompatactivity implements icart {

 private expandablelistview melv;
 private checkbox mquanxuan;
 private textview mzongjia;
 private textview mtvcount;
 private myexpandableadapter myexpandableadapter;

 @override
 protected void oncreate(bundle savedinstancestate) {
 super.oncreate(savedinstancestate);
 setcontentview(r.layout.activity_main);

 initview();
 new cartpresenter(this).getcart();
 eventbus.getdefault().register(this);
 mquanxuan.setonclicklistener(new view.onclicklistener() {
 @override
 public void onclick(view v) {
 myexpandableadapter.qx(mquanxuan.ischecked());
 }
 });
 }

 private void initview() {
 melv = (expandablelistview) findviewbyid(r.id.elv);
 mquanxuan = (checkbox) findviewbyid(r.id.quanxuan);
 mzongjia = (textview) findviewbyid(r.id.zongjia);
 mtvcount = (textview) findviewbyid(r.id.tv_count);
 }

 @override
 public void showlist(list<cartbean.databean> grouplist, list<list<cartbean.databean.listbean>> childlist) {
 myexpandableadapter = new myexpandableadapter(grouplist, this,childlist);
 melv.setadapter(myexpandableadapter);
 for (int i = 0; i <grouplist.size() ; i++) {
 melv.expandgroup(i);
 }
 }

 //接收传过来的值
 @subscribe
 public void onpriceandcount(countandprice cp){


 mzongjia.settext("共"+cp.getcount()+"件商品");
 mtvcount.settext("总计:"+cp.getprice());

 }
 //接收传过来的值
 @subscribe
 public void onpriceandcount1(messgeevent event){
 //改变全选的状态
 mquanxuan.setchecked(event.ischeck());
 }
 @override
 protected void ondestroy() {
 super.ondestroy();
 eventbus.getdefault().unregister(this);
 }
}

第二个页面布局

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 android:id="@+id/activity_add"
 tools:context="com.bwie.zhangzhen20170108.addactivity">

 <com.facebook.drawee.view.simpledraweeview
 android:layout_width="300dp"
 android:id="@+id/xqsdv1"
 android:layout_gravity="center"
 android:layout_height="300dp" />
 <textview
 android:id="@+id/tvtitle1"
 android:layout_width="match_parent"
 android:layout_height="wrap_content" />
 <linearlayout
 android:orientation="horizontal"
 android:layout_width="match_parent"
 android:layout_height="wrap_content">
 <button
 android:id="@+id/tiaozhuan1"
 android:layout_weight="1"
 android:text="跳转到购物车"
 android:layout_width="match_parent"
 android:layout_height="wrap_content" />
 <button
 android:id="@+id/tianjia1"
 android:layout_weight="1"
 android:text="添加到购物车"
 android:layout_width="match_parent"
 android:layout_height="wrap_content" />
 </linearlayout>
</linearlayout>

实现购物车的代码

public class addactivity extends appcompatactivity implements view.onclicklistener,iview {

 private simpledraweeview mxqsdv;
 private textview mtvtitle;
 private button mtiaozhuan;
 private button mtianjia;
 private linearlayout maddactivity;
 private xqpresenter xqpresenter;

 @override
 protected void oncreate(bundle savedinstancestate) {
 super.oncreate(savedinstancestate);
 setcontentview(r.layout.activity_add);

 initview();
 xqpresenter=new xqpresenter(this);
 xqpresenter.getxq();
 }

 private void initview() {
 mxqsdv = (simpledraweeview) findviewbyid(r.id.xqsdv1);
 mtvtitle = (textview) findviewbyid(r.id.tvtitle1);
 mtiaozhuan = (button) findviewbyid(r.id.tiaozhuan1);
 mtiaozhuan.setonclicklistener(this);
 mtianjia = (button) findviewbyid(r.id.tianjia1);
 mtianjia.setonclicklistener(this);
 maddactivity = (linearlayout) findviewbyid(r.id.activity_add);
 }

 @override
 public void onclick(view v) {
 switch (v.getid()) {
 default:
 break;

 //跳到mainactivity (购物车)
 case r.id.tiaozhuan1:
 startactivity(new intent(this,mainactivity.class));
 break;
 case r.id.tianjia1:
 xqpresenter.getadd();
 break;
 }
 }

 @override
 public void showbean(object o) {
 xqbean xqbean = (xqbean) o;
 xqbean.databean data = xqbean.getdata();
 string s = data.getimages().split("\\|")[0];
 uri uri =uri.parse(s);//地址转换成uri
 mxqsdv.setimageuri(uri);
 mtvtitle.settext(data.gettitle()+"\n"+data.getprice());
 }

 @override
 public void showstr(string s) {
 toast.maketext(this, s, toast.length_short).show();
 }
}

eventbus包

设置一个数量和价格的类

public class countandprice {
 private int count ;
 private int price;

 public int getcount() {
 return count;
 }

 public void setcount(int count) {
 this.count = count;
 }

 public int getprice() {
 return price;
 }

 public void setprice(int price) {
 this.price = price;
 }
}

eventbus

public class messgeevent {
 private boolean check;

 public boolean ischeck() {
 return check;
 }

 public void setcheck(boolean check) {
 this.check = check;
 }
}

model

实现详情页model层的接口

public interface ixqmodel {
 public void getxq(int pid, string str, final onnetlisenter<xqbean> cgsb);
}

实现详情页model

public class xqmodel implements ixqmodel{

 @override
 public void getxq(int pid, string str, final onnetlisenter<xqbean> onnetlisenter) {
 flowable<xqbean> flowable = retrofithepler.getserviceapi().getxq(pid, str);
 flowable.observeon(androidschedulers.mainthread())
 .subscribeon(schedulers.io())
 .subscribe(new consumer<xqbean>() {
  @override
  public void accept(xqbean xqbean) throws exception {
  onnetlisenter.success(xqbean);
  }
 });
 }

 public void getadd(int uid, int pid, string str, final onnetlisenter<addcart> onnetlisenter){
 flowable<addcart> flowable = retrofithepler.getserviceapi().getmsg(uid, pid, str);
 flowable.observeon(androidschedulers.mainthread())
 .subscribeon(schedulers.io())
 .subscribe(new consumer<addcart>() {
  @override
  public void accept(addcart addcart) throws exception {
  onnetlisenter.success(addcart);
  }
 });
 }
}

购物车的model

public class cartmodel {
 public void getcart(int uid, string str, final onnetlisenter<cartbean> onnetlisenter){
 flowable<cartbean> flowable = retrofithepler.getserviceapi().getcart(uid,str);
 flowable.observeon(androidschedulers.mainthread())
 .subscribeon(schedulers.io())
 .subscribe(new consumer<cartbean>() {
  @override
  public void accept(cartbean cartbean) throws exception {
  onnetlisenter.success(cartbean);
  }
 });
 }
}

presenter层

详情页的p层

public class xqpresenter {
 private final xqmodel xqmodel;
 private iview iview;
 public xqpresenter(iview iview) {
 xqmodel = new xqmodel();
 this.iview=iview;
 }
 public void getxq(){
 xqmodel.getxq(12, "android", new onnetlisenter<xqbean>() {
 @override
 public void success(xqbean xqbean) {
 iview.showbean(xqbean);
 }
 });
 }
 public void getadd(){
 xqmodel.getadd(3043, 12, "android", new onnetlisenter<addcart>() {
 @override
 public void success(addcart addcart) {
 iview.showstr(addcart.getmsg());
 }
 });
 }
}

购物车的p层

public class cartpresenter {
 private icart icart;
 private final cartmodel cartmodel;

 public cartpresenter(icart icart) {
 this.icart = icart;
 cartmodel = new cartmodel();

 }
 public void getcart(){
 cartmodel.getcart(3043,"android",new onnetlisenter<cartbean>(){

 @override
 public void success(cartbean cartbean) {
 list<cartbean.databean> grouplist = cartbean.getdata();
 list<list<cartbean.databean.listbean>> childlist = new arraylist<>();
 for (int i = 0; i < grouplist.size(); i++) {
  cartbean.databean databean = grouplist.get(i);
  list<cartbean.databean.listbean> list = databean.getlist();
  childlist.add(list);
 }
 icart.showlist(grouplist,childlist);
 }
 });
 }
}

adapter

public class myexpandableadapter extends baseexpandablelistadapter {
 private list<cartbean.databean> groupdata;
 private context context;
 private list<list<cartbean.databean.listbean>> childlist;

 public myexpandableadapter( list<cartbean.databean> groupdata, context context, list<list<cartbean.databean.listbean>> childlist) {
 this.groupdata = groupdata;
 this.context = context;
 this.childlist = childlist;
 }

 @override
 public int getgroupcount() {
 return groupdata.size();
 }

 @override
 public int getchildrencount(int groupposition) {
 return childlist.get(groupposition).size();
 }

 @override
 public object getgroup(int groupposition) {
 return groupdata.get(groupposition);
 }

 @override
 public object getchild(int groupposition, int childposition) {
 return null;
 }

 @override
 public long getgroupid(int groupposition) {
 return groupposition;
 }

 @override
 public long getchildid(int groupposition, int childposition) {
 return childposition;
 }

 @override
 public boolean hasstableids() {
 return false;
 }

 @override
 public view getgroupview(final int groupposition, boolean isexpanded, view convertview, viewgroup parent) {
 final groupviewholder holder;
 if (convertview == null) {
 convertview = view.inflate(context, r.layout.group_item, null);
 holder = new groupviewholder();
 holder.tv_group = (textview) convertview.findviewbyid(r.id.tv_group);
 holder.group_cb = (checkbox) convertview.findviewbyid(r.id.gx_group);

 convertview.settag(holder);
 } else {
 holder = (groupviewholder) convertview.gettag();
 }
 final cartbean.databean databean = groupdata.get(groupposition);

 string sellername = databean.getsellername();
 holder.group_cb.setchecked(databean.ischeck());
 //点击一级checkbox的状态
 holder.group_cb.setonclicklistener(new view.onclicklistener() {
 @override
 public void onclick(view v) {
 databean.setcheck(holder.group_cb.ischecked());
 //改变所有孩子的状态
 changechildstate(groupposition,holder.group_cb.ischecked());
 eventbus.getdefault().post(js());
 //通过判断一级的checkbox判断全选的状态
 changemianqxstatus(checkgroupall());
 notifydatasetchanged();
 }
 });


 return convertview;
 }

 @override
 public view getchildview(final int groupposition, final int childposition, boolean islastchild, view convertview, viewgroup parent) {
 final childviewholder holder;
 if (convertview == null) {
 convertview = view.inflate(context, r.layout.child_item, null);
 holder = new childviewholder();

 holder.tv_title= (textview) convertview.findviewbyid(r.id.title);
 holder.price= (textview) convertview.findviewbyid(r.id.price);
 holder.child_cb= (checkbox) convertview.findviewbyid(r.id.gouxuan_child);
 holder.add= (textview) convertview.findviewbyid(r.id.jia);
 holder.del= (textview) convertview.findviewbyid(r.id.del);
 holder.jian= (textview) convertview.findviewbyid(r.id.jian);
 holder.sdv= (simpledraweeview) convertview.findviewbyid(r.id.title_img);
 holder.tv_num= (textview) convertview.findviewbyid(r.id.tv_num);
 holder.yanse= (textview) convertview.findviewbyid(r.id.yanse);
 convertview.settag(holder);
 } else {
 holder = (childviewholder) convertview.gettag();
 }
 final cartbean.databean.listbean listbean = childlist.get(groupposition).get(childposition);
 int price = (int) listbean.getprice();
 holder.child_cb.setchecked(listbean.ischeck());
 holder.price.settext("¥:"+price+"");
 string title = listbean.gettitle();
 holder.tv_title.settext(title);
 string subhead = listbean.getsubhead();
 string substring = subhead.substring(1, 10)+".....";
 holder.yanse.settext(substring);
 string images = listbean.getimages();
 string[] split = images.split("\\|");
 string s = split[0];
 uri uri=uri.parse(s);
 holder.sdv.setimageuri(uri);
 // listbean.setcou(integer.parseint(holder.tv_num.gettext().tostring()));
 //给子条目的checkbox点击事件
 holder.child_cb.setonclicklistener(new view.onclicklistener() {
 @override
 public void onclick(view v) {
 listbean.setcheck(holder.child_cb.ischecked());

 eventbus.getdefault().post(js());
 //如果二级的checkbox选中,就让一级的checkbox勾选
 if(holder.child_cb.ischecked()) {

  if (ischeckallchild(groupposition)) {
  //改变一级checkbox的状态
  changegroupstatus(groupposition,true);
  //通过判断一级的checkbox的状态来改变全选的状态
  changemianqxstatus(checkgroupall());

  }
 }else{
  changegroupstatus(groupposition,false);
  changemianqxstatus(checkgroupall());
 }
 notifydatasetchanged();
 }

 });

 //点击加加的功能
 holder.add.setonclicklistener(new view.onclicklistener() {
 @override
 public void onclick(view v) {
 int cou = listbean.getcou();
 holder.tv_num.settext(++cou+"");
 listbean.setcou(cou);
 if(holder.child_cb.ischecked()){
  eventbus.getdefault().post(js());
 }

 }
 });
 //点击减减的功能
 holder.jian.setonclicklistener(new view.onclicklistener() {
 @override
 public void onclick(view v) {
 int cou = listbean.getcou();

 if(cou==1) {
  toast.maketext(context, "最小数量为1", toast.length_short).show();
  return;}
 holder.tv_num.settext(--cou+"");
 listbean.setcou(cou);
 if (holder.child_cb.ischecked()) {
  eventbus.getdefault().post(js());

 }
 }
 });
 //点击删除
 holder.del.setonclicklistener(new view.onclicklistener() {
 @override
 public void onclick(view v) {
 list<cartbean.databean.listbean> listbeen = childlist.get(groupposition);

 cartbean.databean.listbean remove = listbeen.remove(childposition);
 if(listbeen.size()==0){
  childlist.remove(childposition);
  groupdata.remove(groupposition);
 }
 eventbus.getdefault().post(js());
 notifydatasetchanged();

 }
 });

 return convertview;
 }

 @override
 public boolean ischildselectable(int groupposition, int childposition) {
 return true;
 }

 class groupviewholder {
 checkbox group_cb;
 textview tv_group;
 }

 class childviewholder {
 checkbox child_cb;
 textview tv_title,price,yanse,tv_num;
 textview del,add,jian;
 simpledraweeview sdv;


 }
 /**
 * 判断全部的二级是checkbox否选中
 *
 */
 private boolean ischeckallchild(int g){
 list<cartbean.databean.listbean> listbeen = childlist.get(g);

 for (int i = 0; i <listbeen.size() ; i++) {
 cartbean.databean.listbean listbean = listbeen.get(i);

 if(!listbean.ischeck()){
 return false;
 }
 }
 return true;
 }

 /**
 * 计算数量和价格
 * 通过遍历一级的得到二级的checkbox,如果是选择的选中状态的话,就统计它们的总计的数量和价格
 */
 private countandprice js(){
 int cou=0;
 int jiage=0;
 for (int i = 0; i <groupdata.size() ; i++) {
 for (int j = 0; j <childlist.get(i).size() ; j++) {
 cartbean.databean.listbean listbean = childlist.get(i).get(j);
 if(listbean.ischeck()){
  cou+=listbean.getcou();
  jiage+=(int)listbean.getprice()*listbean.getcou();
 }

 }

 }
 countandprice countandprice = new countandprice();
 countandprice.setcount(cou);
 countandprice.setprice(jiage);
 return countandprice;
 }
 /**
 * 改变一级列表的状态
 */
 private void changegroupstatus(int groupposition,boolean flag ){
 cartbean.databean databean = groupdata.get(groupposition);

 databean.setcheck(flag);
 }
 /**
 * 改变全选的状态
 *
 */
 private void changemianqxstatus(boolean flag){
 messgeevent messgeevent = new messgeevent();
 messgeevent.setcheck(flag);
 eventbus.getdefault().post(messgeevent);
 }
 /**
 * 判断一级的是否全部选中
 */
 private boolean checkgroupall(){
 for (int i = 0; i < groupdata.size(); i++) {
 if(!groupdata.get(i).ischeck()){
 return false;
 }
 }
 return true;
 }
 /**
 * 改变所有孩子的状态
 */
 private void changechildstate(int groupistion,boolean flag){
 list<cartbean.databean.listbean> listbeen = childlist.get(groupistion);
 for (int i = 0; i < listbeen.size(); i++) {
 listbeen.get(i).setcheck(flag);
 }
 }
 /**
 * 改变全选的
 */
 public void qx(boolean flag){
 for (int i = 0; i < groupdata.size(); i++) {
 changegroupstatus(i, flag);
 changechildstate(i, flag);
 }
 eventbus.getdefault().post(js());
 notifydatasetchanged();
 }
}

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">

 <checkbox
 android:id="@+id/gx_group"
 android:focusable="false"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />
 <textview
 android:id="@+id/tv_group"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />
</linearlayout>

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">

 <textview
 android:id="@+id/title"
 android:layout_marginleft="20dp"
 android:layout_width="match_parent"
 android:layout_height="wrap_content" />
 <linearlayout
 android:orientation="horizontal"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content">
 <checkbox
 android:layout_marginleft="20dp"
 android:gravity="center_vertical"
 android:id="@+id/gouxuan_child"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />
 <com.facebook.drawee.view.simpledraweeview
 android:gravity="center_vertical"
 android:id="@+id/title_img"
 android:layout_width="50dp"
 android:layout_height="50dp" />
 <linearlayout
 android:orientation="vertical"
 android:layout_marginleft="30dp"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content">
 <textview
 android:id="@+id/price"
 android:layout_marginleft="10dp"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />
 <textview
 android:id="@+id/yanse"
 android:layout_marginleft="10dp"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />
 <linearlayout
 android:layout_marginleft="100dp"
 android:orientation="horizontal"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content">
 <textview
  android:id="@+id/jian"
  android:layout_width="20dp"
  android:layout_height="20dp"
  android:textsize="15sp"
  android:text="一"/>

 <textview
  android:id="@+id/tv_num"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_marginleft="5dp"
  android:paddingbottom="2dp"
  android:paddingleft="20dp"
  android:paddingright="20dp"
  android:paddingtop="2dp"
  android:text="1" />

 <textview
  android:id="@+id/jia"
  android:layout_width="20dp"
  android:layout_height="20dp"
  android:layout_marginleft="5dp"
  android:text="+"
  android:textsize="15sp"/>
 </linearlayout>

 </linearlayout>
 <textview
 android:id="@+id/del"
 android:layout_marginleft="20dp"
 android:text="删除"
 android:textcolor="#ffffff"
 android:background="#ff3660"
 android:layout_width="32dp"
 android:layout_height="29dp" />
 </linearlayout>
</linearlayout>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网