บทความนี้แชร์รหัสเฉพาะสำหรับ RXJAVA ติดตั้งการติดตั้งตะกร้าสินค้าสำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
แสดงให้ทุกคนเห็นการเรนเดอร์ก่อน
โครงสร้างกรอบ:
1. กรอบโครงการ: MVP, การโหลดรูปภาพทำได้โดย Fresco คำขอเครือข่ายจะถูกนำไปใช้โดยใช้ Okhttp+ติดตั้งเพิ่มเติม (ห่อหุ้มด้วยตัวคุณเองเพิ่มโหมด Singleton)
2. เติมข้อมูลตะกร้าสินค้าให้เสร็จสมบูรณ์ (หากไม่มีข้อมูลเกี่ยวกับอินเทอร์เฟซคุณสามารถเพิ่มข้อมูลโดยใช้เครื่องมืออินเตอร์เฟส)
3. ปรับแต่งมุมมองเพื่อใช้ปุ่มเพิ่มและการลบ ทุกครั้งที่คุณคลิกเพิ่มและลบจำนวนทั้งหมดและราคารวมในรายการจะต้องเปลี่ยนแปลงตามนั้น
4. เมื่อปริมาณเป็น 1 คลิกเครื่องหมายลบปริมาณจะยังคงไม่เปลี่ยนแปลงและขนมปังปิ้งจะแจ้งให้ผู้ใช้ทราบว่าหมายเลขต่ำสุดคือ 1
5. จำนวนรวมและราคารวมที่ด้านล่างคือราคารวมและจำนวนรวมในรายการทั้งหมด หากราคาปริมาณในแต่ละรายการมีการเปลี่ยนแปลงจำนวนทั้งหมดของราคารวมที่ด้านล่างจะต้องเชื่อมโยงกับมัน
6. ใช้ฟังก์ชั่นของการเลือกแบบย้อนกลับแบบตัวเลือกเดียวทั้งหมดป้อนการเลือกเริ่มต้นเป็นครั้งแรกจำนวนรวมและราคารวมจะไม่รวมอยู่ในข้อมูลด้านล่างเมื่อไม่เลือกรายการ เมื่อสถานะที่เลือกมีการเปลี่ยนแปลงจำนวนรวมและราคารวมของด้านล่างสามารถแก้ไขได้อย่างถูกต้อง
7. คลิกปุ่มลบเพื่อลบรายการ จำนวนรวมและราคารวมที่ด้านล่างสามารถแก้ไขได้อย่างถูกต้องและข้อมูลอินเทอร์เฟซจะถูกลบ
เพิ่มการพึ่งพาและการอนุญาตเครือข่ายที่จำเป็น
คอมไพล์ 'com.squareup.retrofit2: ติดตั้งอีกครั้ง: 2.0.0-beta4' // retrofit2 แพ็คเกจที่จำเป็นคอมไพล์ 'com.squareup.retrofit2: converter-gson: 2.0.0-beta4' // converterfactory 'com.squareup.retrofit2: Converter-Scalars: 2.0.0-beta4' // converterfactory การพึ่งพาการพึ่งพาของสตริงการรวบรวม 'io.reactivex.rxjava2: rxjava: 2.1.3'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'
<Use-Permission Android: name = "Android.permission.internet" />>>
ผู้รับเหมาช่วงก่อนใช้โหมด MVP
แพ็คเกจสุทธิ
API
คลาสสาธารณะ API {Public Static String Host = "http://120.27.23.105/product/";}คนรับใช้
อินเทอร์เฟซสาธารณะ serviceapi {@get ("getProductDetail") flowable <xqbean> getxq (@Query ("PID") int PID, @Query ("Source") str); @get ("addCart") flowable <dadcart> getMSG (@Query ("uid") int uid, @Query ("PID") int PID, @Query ("Source") str); @get ("getCarts") flowable <cartbean> getCart (@Query ("uid") int uid, @Query ("แหล่งที่มา") String str);}อินเทอร์เฟซที่ประสบความสำเร็จ
อินเทอร์เฟซสาธารณะ OnNetLisEnter <T> {เป็นโมฆะความสำเร็จ (T T);}บรรจุภัณฑ์ติดตั้งเพิ่มเติม
Public Class Retrofithepler {สาธารณะคงที่ okhttpClient okhttpClient; serviceapi serviceapi สาธารณะคงที่; / *** การดำเนินการลำดับความสำคัญ*/ คงที่ {getOkhttpClient (); } สาธารณะคงที่ okhttpClient getOkhttpClient () {ถ้า (okhttpClient == null) {ซิงโครไนซ์ (okhttpClient.class) {ถ้า (okhttpClient == null) }} ส่งคืน okhttpClient; } สาธารณะคงที่ serviceapi getServiceapi () {ถ้า (serviceapi == null) {ซิงโครไนซ์ (okhttpClient.class) {ถ้า (serviceapi == null) {serviceapi = oncreate (serviceapi.class, api.host); }}} return serviceapi; } สาธารณะคงที่ <t> t onCreate (คลาส <t> tclass, url string) {retrofit redrofit = ใหม่ retrofit.builder () .baseurl (url) .AddCallAdapterFactory (rxjava2CalladapterFactory.create ()) //. addCallAdapterFactory (rxjava2CalladapterFactory.create ()) .build (); return return.create (tclass); - แพ็คเกจถั่ว
คลาสถั่วสำหรับรายละเอียดหน้า
คลาสสาธารณะ xqbean {/** * msg: * ผู้ขาย: {"คำอธิบาย": "ฉันเป็นพ่อค้า 2", "ไอคอน": "http://120.27.23.105/images/icon.png", "ชื่อ": "Merchant 2", "Productnums": 999, " {"การต่อรองราคา": 111.99, "createTime": "2017-10-14T21: 48: 08", "รายละเอียด": "https://item.m.jd.com/product/4719303.html 335139774 & utm_term = qqfriends "," รูปภาพ ":" https://m.360buyimg.com/n0/jfs/t9004/210/1160 833155/647627/ad6be059/59b4f4e1n9a2b1532.jpg! q70.jpg | https: //m.360buyimg.com/n0/jfs/t7 504/338/63721388/491286/F5957F53/598E95F1N7F2ADB87.JPG! q70.jpg | https: //m.360buyimg.co m/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbnd989ba0a.jpg! q70.jpg " , "PID": 9, "ราคา": 78.99, "PSCID": 1, "Salenum": 2356, "SellerId": 2, "Subhead": "เทศกาลกลางฤดูใบไม้ร่วงทุกครั้งไม่สามารถเรียบง่ายไม่ว่าคุณจะอยู่ที่ไหน Fingers "," Title ":" Beijing Daoxiangcun Daoxiangcun Mid-Autumn Festival Mooncake Old Beijing Mooncake Gift Box 655g "} */ Private String msg; ผู้ขายส่วนตัว รหัสสตริงส่วนตัว; ข้อมูลข้อมูลส่วนตัว สตริงสาธารณะ getmsg () {return msg; } โมฆะสาธารณะ setMSG (สตริงผงชูรส) {this.msg = msg; } Public SellerBean GetSeller () {ผู้ขายส่งคืน; } โมฆะสาธารณะ setSeller (ผู้ขายผู้ขาย) {this.seller = ผู้ขาย; } สตริงสาธารณะ getCode () {รหัสส่งคืน; } โมฆะสาธารณะ setCode (รหัสสตริง) {this.code = code; } Public Databean getData () {ส่งคืนข้อมูล; } โมฆะสาธารณะ setData (ข้อมูล Databean) {this.data = data; } ระดับสาธารณะระดับสแตติก SellerBean {/** * คำอธิบาย: ฉันเป็นผู้ค้า 2 * ไอคอน: http://120.27.23.105/images/icon.png * ชื่อ: ผู้ค้า 2 * ผลิตภัณฑ์: 999 * คะแนน: 5.0 * ผู้ขาย: 2 */คำอธิบายสตริงส่วนตัว; ไอคอนสตริงส่วนตัว ชื่อสตริงส่วนตัว; Private Int Productnums; คะแนนสองเท่าส่วนตัว; ผู้ขาย int ส่วนตัว; สตริงสาธารณะ getDescription () {คำอธิบาย return; } โมฆะสาธารณะ setDescription (คำอธิบายสตริง) {this.description = คำอธิบาย; } สตริงสาธารณะ geticon () {ไอคอนส่งคืน; } โมฆะสาธารณะ seticon (ไอคอนสตริง) {this.icon = ไอคอน; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } public int getProductNums () {return productNums; } โมฆะสาธารณะ setProductNums (int productNums) {this.productNums = productNums; } สาธารณะ double getScore () {คะแนนคืน; } โมฆะสาธารณะ setScore (คะแนนสองเท่า) {this.score = คะแนน; } public int getSellerId () {return sellerId; } โมฆะสาธารณะ setSellerId (int sellerId) {this.sellerId = sellerId; }} DataBean คลาสสแตติกสาธารณะ { /** * การต่อรองราคา: 111.99 * CreateTime: 2017-10-14T21: 48: 08 * รายละเอียด URL: https://item.m.jd.com/product/4719303.html? https://m.360buyimg.com/n0/jfs/t9004/210/11608333155/647627/ad6be059/59b4 F4E1N9A2B1532.jpg! q70.jpg | https: //m.360buyimg.com/n0/jfs/t7504/338/63721 388/491286/F5957F53/598E95F1N7F2ADB87.JPG! q70.jpg | https: //m.360buyimg.co M/N0/JFS/T7441/10/64242474/419246/ADB30A7D/598E95FBND989BA0A.JPG! q70.jpg * Itemtype: 2 * PID: 9 * ราคา: 78.99 * PSCID: 1 * การขาย: 2356 * SellerID: 2 * Subhead: Every Mid-Autumn Festival ไม่ง่ายเลย ไม่ว่าคุณจะอยู่ที่ไหนคุณก็ต้องมีเค้กชิ้นหนึ่งเพื่อทำให้ชีวิตของคุณสมบูรณ์ยิ่งขึ้น JD Mooncakes ทำให้ความรักสมบูรณ์ยิ่งขึ้น JD ที่ดำเนินการด้วยตนเองการจัดส่งฟ้าผ่าน่าประหลาดใจมากขึ้นโปรดคลิกด้วยนิ้วมือของคุณ * ชื่อเรื่อง: ปักกิ่ง Daoxiangcun Daoxiangcun กลางฤดูร้อนเทศกาลมูนเค้กมูนเค้กมูนเค้ก สตริงส่วนตัว createTime; รายละเอียดสตริงส่วนตัว; ภาพสตริงส่วนตัว รายการ INT ส่วนตัว; Private Int PID; ราคาสองเท่าส่วนตัว pscid int ส่วนตัว; Salesenum int ส่วนตัว; ผู้ขาย int ส่วนตัว; หัวย่อยสตริงส่วนตัว; ชื่อสตริงส่วนตัว; สาธารณะ double getBargainPrice () {return bargainprice; } โมฆะสาธารณะ setBargainPrice (double bargainprice) {this.bargainPrice = การต่อรองราคา; } สตริงสาธารณะ getCreateTime () {return createTime; } โมฆะสาธารณะ setCreateTime (String createTime) {this.createTime = createTime; } สตริงสาธารณะ getDetaIlUrl () {return detailUrl; } โมฆะสาธารณะ setDetaIlUrl (String detailuRl) {this.detailUrl = detailUrl; } public String getImages () {return images; } โมฆะสาธารณะ setImages (ภาพสตริง) {this.images = images; } public int getItemType () {return itemType; } โมฆะสาธารณะ setItemType (int itemType) {this.ItemType = itemType; } public int getPid () {return pid; } โมฆะสาธารณะ setPID (int pid) {this.pid = pid; } สาธารณะ double getPrice () {ราคาคืน; } โมฆะสาธารณะ setPrice (ราคาสองเท่า) {this.price = ราคา; } public int getpScid () {return pscid; } โมฆะสาธารณะ setpScid (int pscid) {this.pscid = pscid; } public int getSalenum () {return salesenum; } โมฆะสาธารณะ setsalenum (int salesenum) {this.salenum = salesenum; } public int getSellerId () {return sellerId; } โมฆะสาธารณะ setSellerId (int sellerId) {this.sellerId = sellerId; } สตริงสาธารณะ getSubhead () {return subhead; } โมฆะสาธารณะ SetSubhead (Subhead String) {this.subhead = subhead; } สตริงสาธารณะ getTitle () {return title; } โมฆะสาธารณะ settitle (ชื่อสตริง) {this.title = title; -ถั่วเพิ่มเข้าไปในรถเข็น
คลาสสาธารณะ AddCart {Private String MSG; รหัสสตริงส่วนตัว; สตริงสาธารณะ getmsg () {return msg; } โมฆะสาธารณะ setMSG (สตริงผงชูรส) {this.msg = msg; } สตริงสาธารณะ getCode () {รหัสส่งคืน; } โมฆะสาธารณะ setCode (รหัสสตริง) {this.code = code; -หมวดหมู่ผลิตภัณฑ์
คลาสสาธารณะ cartbean { /*** msg: ขอให้สำเร็จ* รหัส: 0* ข้อมูล: [{"list": [{"bargainprice": 22.9, "createTime": "2017-10-14t21: 48: 08", "detailyUrl": "https://item.m.jd.com/product/2542855.html?utm_source & utm_medium = appshare & utm_campaign = t_335139774 & utm_term = qqfriends "," รูปภาพ ":" https://m.360buyimg.com/n0/jfs/t1930/284/2865629620/390243333/ 56F0A08FNBD3A1235.JPG! q70.jpg | https: //m.360buyimg.com/n0/jfs/t2137/336/2 802996626/155915/E5E90D7A/56F0A09CN33E01BD0.JPG! q70.jpg | https: //m.360buy img.com/n0/jfs/t1882/31/2772215910/389956/c8dbf370/56f0a2na0c86ea6.jpg ! q70.jpg | https: //m.360buyimg.com/n0/jfs/t2620/166/2703833710/312660/531a A913/57709035N33857877.jpg! q70.jpg "," num ": 1," PID ": 24," ราคา ": 288," pscid ": 2," เลือกที่ 9, กว่า 9 》 "," title ":" สามกระรอกถั่วคั่วของว่างครีมพีแคน 225G/กระเป๋า "}, {" การต่อรองราคา ": 11800," CreateTime ":" 2017-10-10T17: 33: 37 " .html? utm#_source = Androidapp & utm#_medium = appshare & utm#_campaign = t#_335139774 & utm#_term = qqfriends " /155/2098998076/156185/6CF95035/595DD5A5NC3A7DAB5.JPG!Q70.jpg","num":2, " PID ": 57," ราคา ": 5199," PSCID ": 40," เลือก ": 0," SellerID ": 1," Subhead ":" 【 i5 หน่วยความจำวิดีโอ MX150 2G] Full HD HARK CARKEN BEZEL 8G หน่วยความจำ 256 SSD รองรับการจดจำลายนิ้วมือล่วงหน้า WIN10 SYSTEM "," title ":" Xiaomi (MI) Air 13.3 นิ้วโน้ตบุ๊คบาง ๆ (I5-7200U 8G 256G PCLE SSD MX150 Silver/R/N "}, {" Bargainprice ": 99," CreateTime ":" 2017-10-14t21: 38: 26 "," DetailuRl ":" https://item.m.jd.com/product/4345173.html แบ่งปัน & utm#_campaign = t#_335139774 & utm#_term = qqfriends "," รูปภาพ ":" 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/594a3a12 N5B900606.jpg! q70.jpg "," num ": 1," pid ": 45," ราคา ": 2999," pscid ": 39," เลือก ": 0," sellerid ": 1," subhead ": สัตว์ประหลาด! 1 "," SellerId ":" 1 "}, {" List ": [{" BargainPrice ": 6666," CreateTime ":" 2017-10-10T16: 01: 31 "," รายละเอียด ":" https://item.jd.com/product/ .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/28210 6/68af5b54/59b8480ane8af7f5c.jpg! q70.jpg | https: //m.360buyimg.com/n0/jfs/t8434/54/1359766 007/56140/579509D9/59B85801NFEA207DB.JPG! q70.jpg "," num ": 1," pid ": 46," ราคา ": 234," pscid " แตกต่างกัน "," title ":" Apple iPhone 8 Plus (A1864) 64GB Golden Mobile Unicom Telecom 4G Mobile "}]," SellerName ":" Merchant 2 "," SellerId ":" 2 "}, {" List ": [{" BargainPrice ": 111.99," CreateTime ":" 2017-10-03T23: 43: 53 "," รายละเอียด ":" https://item.m.jd.com/product utm_medium = appshare & utm_campaign = t_335139774 & utm_term = qqfriends "," รูปภาพ ":" https://m.360buyimg.com /n0/jfs/t9004/210/11608333155/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, "เลือก": 0, "SellerId": 5, "Subhead": "Every Mid-Autumn Festival ไม่สามารถเรียบง่ายไม่ว่าคุณจะอยู่ที่ไหนคุณมักจะต้องเค้กเพื่อทำให้ชีวิตของคุณสมบูรณ์ยิ่งขึ้น JD Mooncakes ทำให้ความรักสมบูรณ์ยิ่งขึ้น Festival Mooncake Old Beijing Mooncake Gift Box 655g "}]," SellerName ":" Merchant 5 "," SellerId ":" 5 "}, {" List ": [{" Bar Gainprice ": 11800," CreateTime ":" 2017-10-03T23: 53: 28 "," DetailUrl ":" https://mitem.jd.hk/ware/view.act ไอออน? wareid = 1988853309 & cachekey = 1acb07a701ece8d2434a6ae7fa6870a1 "," รูปภาพ ":" https://m.360buyimg.com/ N0/JFS/T6130/97/1370670410/180682/1109582A/593276B1ND81FE723.JPG! q70.jpg | https: //m.360buyimg.com/n 0/JFS/T5698/110/2617517836/202970/C9388FEB/593276B7NBD94EF1F.JPG! q70.jpg | https: //m.360buyimg.com/n0 /jfs/t5698/110/2617517836/202970/C9388FEB/593276B7NBD94EF1F.JPGOKTOM /jfs/T5815/178/2614671118/51656/7F52D137/593276C7N107B725A.JPGOKOK7Q70.JPG|HTTPS://M.360BUYIMG.com/N0/J FS/T5878/60/2557817477/30873/4502B606/593276CAN5A7D6357.JPG! q70.jpg "," num ": 1," pid ": 62," ราคา ": 15999," PSCID ": 40 ผลิตภัณฑ์สำนักงานคอมพิวเตอร์สำหรับ 1 หยวนและกลับไปฝึกตั๋วสำหรับ 5 หยวน (เมื่อผลตอบแทนสิ้นสุดลงแล้ว) "," ชื่อ ":" การซื้อแอปเปิ้ลรุ่นใหม่ของ Apple รุ่นใหม่ MacBook Pro Apple Laptop Laptop VP2 แถบ 13 นิ้วใหม่ i5/8g/256g "}]," SellerName ":" ผู้ค้า 6 "," SellerId ":" 6 "}, {" list ": [{" BargainPrice ": 399," CreateTime ":" 2017-10-03T23: 53: 28 "," DetailUll ":" https://item.m.jd.com/product/14398207. utm_source = Androidapp & utm_medium = appshare & utm_campaign = t_335139774 & utm_term = qqfriends " , "รูปภาพ": "https://m.360buyimg.com/n0/jfs/t5887/201/859509257/69994/6bde9bf6/59224c24n E854E14C.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/5737 4/5C73D281/59224C24N3324D5F4.JPG! Q70.JPG "," NUM ": 1," PID ": 86," ราคา ": 777," PSCID ": 85,": 0, "SULERID" สะดวกสบายเรียบง่ายล้างกางเกงขายาวกางเกงยีนส์แน่น 941825 สีเทาเข้ม 33/32 (175/84a) "}]," sellerName ":" พ่อค้า 7 "," SellerId ":" 7 "}, {" List ": [{" BargainPrice ": 111.99," CreateTime ":" 2017-10-14T21: 39: 05 " UCT/4719303.html? utm_source = Androidapp & utm_medium = appshare & utm_campaign = t_335139774 & utm_term = qqfriends "," รูปภาพ ":" https: //m.36 0buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1n9a2b153 2.jpg! q70.jpg | https: //m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/F 5957F53/598E95F1N7F2ADB87.JPG! q70.jpg | https: //m.360buyimg.com/n0/jfs/t74 41/10/64242474/419246/ADB30A7D/598E95FBND989BA0A.JPG! q70.jpg " ID ": 1," ราคา ": 118," PSCID ": 1," เลือก ": 0," SellerId ": 17," Subhead ":" เทศกาลกลางฤดูร้อนทุกครั้งไม่สามารถทำได้ง่าย ๆ Daoxiangcun Mid-Autumn Festival Mooncake Old Beijing Mooncake Gift Box 655g "}]," SellerName ":" Merchant 17 "," Sellerid ":" 17 "}, {" List ": [{" Bargainprice ": 111.99," CreateTime ":" 2017-10-14t21 : //item.m.jd.com/product/4719303.html? utm_source = Androidapp & utm_medium = appshare & utm_campaign = t_335139774 & utm_term = qqfriends " .360BUYIMG.com/N0/JFS/T9004/210/1160833155/647627/AD6BE059/59B4F4E1N9A2B 1532.jpg! q70.jpg | https: //m.360buyimg.com/n0/jfs/t7504/338/63721388/491286 /f5957f53/598E95F1N7F2ADB87.JPG!Q70.jpg|https://m.360buyimg.com/n0/jfs/t 7441/10/64242474/419246/ADB30A7D/598E95FBND989BA0A.JPG! q70.jpg "," num ": 4, "PID": 2, "ราคา": 299, "PSCID": 1, "เลือก": 0, "SellerId": 18, "Subhead": "เทศกาลกลางฤดูร้อนทุกครั้งไม่สามารถเรียบง่ายไม่ว่าคุณจะอยู่ที่ไหน Daoxiang Village Daoxiang Village Mid-Autumn Festival Mooncake Mooncake Old Beijing Mooncake Gift Box 655g "}]," SellerName ":" พ่อค้า 18 "," SellerId ":" 18 "}, {" List ": [{" BargainPrice ": 11800," CreateTime ":" 2017-10-03T23: 53: 28 " /view.action?wareid=1988853309&cachekey=1Acb07a701ece8d2434a6ae7fa6870a","images":"https://m.360buyimg.com/n0/jfs/t6130/97/17/17/17 370670410/180682/1109582A/593276B1ND81FE723.JPG! q70.jpg | https: //m.360buy img.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7nbd94ef1f.jp g! q70.jpg | https: //m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c93 88Feb/593276B7NBD94EF1F.JPG! q70.jpg | https: //m.360buyimg.com/n0/jfs/t5815/ 178/2614671118/51656/7F52D137/593276C7N107B725A.JPG! q70.jpg | https: //m.36 0buyimg.com/n0/jfs/t5878/60/2557817477/30873/4502B606/593276CAN5A7D6357 jpg! q70.jpg "," num ": 1," PID ": 76," ราคา ": 37999.99," pscid ": 40," เลือก ": 0," sellerid ": 20," subhead ":" ซื้อผลิตภัณฑ์คอมพิวเตอร์ Silver VP2 ใหม่แถบ 13 นิ้ว i5/8g/256g "}]," sellerName ":" Merchant 20 "," SellerId ":" 20 "}, {" List ": [{" BargainPrice ": 111.99," CreateTime ":" 2017-10-14T21: 39: 05 "," รายละเอียด ":" https://item.m.jd.com/product P & utm_medium = appshare & utm_campaign = t_335139774 & utm_term = qqfriends "," รูปภาพ ":" 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," E ": 88.99," PSCID ": 1," เลือก ": 0," SellerId ": 21," Subhead ":" เทศกาลกลางฤดูร้อนทุกครั้งไม่สามารถทำได้ง่าย Daoxiangcun Mid-Autumn Festival Mooncake Old Beijing Mooncake Gift Box 655G "}]," SellerName ":" Merchant 21 "," SellerId ":" 21 "}]] */ Private String MSG; รหัสสตริงส่วนตัว; รายการส่วนตัว <Tatabean> ข้อมูล; สตริงสาธารณะ getmsg () {return msg; } โมฆะสาธารณะ setMSG (สตริงผงชูรส) {this.msg = msg; } สตริงสาธารณะ getCode () {รหัสส่งคืน; } โมฆะสาธารณะ setCode (รหัสสตริง) {this.code = code; } รายการสาธารณะ <Tatabean> getData () {ส่งคืนข้อมูล; } โมฆะสาธารณะ setData (รายการ <Tatabean> ข้อมูล) {this.data = ข้อมูล; } Databean คลาสสแตติกสาธารณะ { /*** รายการ: [{"BargainPrice": 22.9, "CreateTime": "2017-10-14T21: 48: 08", "รายละเอียด": "https://item.m.jd.com/product/2542855.html ium = appshare & utm_campaign = t_335139774 & utm_term = qqfriends "," รูปภาพ ":" https://m.360buyimg.com/n0/jfs/t1930/284/2865629620/390243/ fnbd3a1235.jpg! q70.jpg | https: //m.360buyimg.com/n0/jfs/t2137/336/28029966 626/155915/E5E90D7A/56F0A09CN33E01BD0.JPG! Q70.JPG | https: //m.360buyimg.c OM/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,":0,":0,งอเรสต์ ซื้อมัน》 "," title ":" สามกระรอกถั่วคั่วของว่างครีมพีแคน 225g/กระเป๋า "}, {" การต่อรองราคา ": 11800," createTime ":" 2017-10-10t17: 33: 37 " tml? utm#_source = Androidapp & utm#_medium = appshare & utm#_campaign = t#_335139774 & utm#_term = qqfriends " 155/2098998076/156185/6CF95035/595DD5A5NC3A7DAB5.JPG! Q70.JPG "," NUM ": 2," PID ": 57," ราคา ": 5199," PSCID ": 40" หน่วยความจำวิดีโอ MX150 2G] Full HD HARK CARKEN BEZEL 8G หน่วยความจำ 256 SSD รองรับการจดจำลายนิ้วมือล่วงหน้า WIN10 SYSTEM "," title ":" Xiaomi (MI) Air 13.3 นิ้วโน้ตบุ๊คบาง ๆ (I5-7200U 8G 256G PCLE SSD MX150 Silver/R/N "}, {" Bargainprice ": 99," CreateTime ":" 2017-10-14t21: 38: 26 "," DetailuRl ":" https://item.m.jd.com/product/4345173.html แบ่งปัน & utm#_campaign = t#_335139774 & utm#_term = qqfriends "," รูปภาพ ":" 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/594a3a12 N5B900606.jpg! q70.jpg "," num ": 1," pid ": 45," ราคา ": 2999," pscid ": 39," เลือก ": 0," sellerid ": 1," subhead ": สัตว์ประหลาด! ผู้ขายสตริงส่วนตัว; รายการส่วนตัว <listbean> รายการ; เช็คบูลีนส่วนตัว บูลีนสาธารณะ ischeck () {เช็คคืน; } โมฆะสาธารณะ setCheck (ตรวจสอบบูลีน) {this.check = ตรวจสอบ; } สตริงสาธารณะ getSellerName () {return sellerName; } โมฆะสาธารณะ setSellerName (String sellerName) {this.sellerName = sellerName; } สตริงสาธารณะ getSellerId () {return sellerId; } โมฆะสาธารณะ setSellerId (String sellerId) {this.sellerId = sellerId; } รายการสาธารณะ <SliStBean> getList () {return list; } โมฆะสาธารณะ setlist (รายการ <listebean> รายการ) {this.list = list; } คลาสสแตติกสาธารณะ ListBean { /** * การต่อรองราคา: 22.9 * CreateTime: 2017-10-14T21: 48: 08 * รายละเอียด URL: https://item.m.jd.com/product/2542855.html? https://m.360buyimg.com/n0/jfs/t1930/284/2865629620/390243/e3ade9c4/56f0a08fnbd3a1235.jpg! | https: //m.360buyimg.com/n0/jfs/t2137/336/28029966626/155915/e5e90d7a/56f0a09cn33e01bd0.jpg! | https: //m.360buyimg.com/n0/jfs/t1882/31/2772215910/389956/c8dbf370/56F0A2NA0C86EA6.JPG! | https: //m.360buyimg.com/n0/jfs/t2620/166/2703833710/312660/531aa913/57709035n33857877.jpg! * NUM: 1 * PID: 24 * ราคา: 288.0 * PSCID: 2 * เลือก: 0 * SellerId: 1 * หัวย่อย: สาม SUBIRREL SNACKS ข้อเสนอพิเศษ 50 OFF สำหรับการซื้อมากกว่า 99 ในพื้นที่ 100 สำหรับการซื้อมากกว่า 199 สตริงส่วนตัว createTime; รายละเอียดสตริงส่วนตัว; ภาพสตริงส่วนตัว INT NUM ส่วนตัว; Private Int PID; ราคาสองเท่าส่วนตัว pscid int ส่วนตัว; ตัวเลือกส่วนตัวที่เลือก; ผู้ขาย int ส่วนตัว; หัวย่อยสตริงส่วนตัว; ชื่อสตริงส่วนตัว; ส่วนตัว int cou = 1; สาธารณะ int getcou () {return cou; } โมฆะสาธารณะ setcou (int cou) {this.cou = cou; } เช็คบูลีนส่วนตัว; บูลีนสาธารณะ ischeck () {เช็คคืน; } โมฆะสาธารณะ setCheck (ตรวจสอบบูลีน) {this.check = ตรวจสอบ; } สาธารณะ double getBargainPrice () {return bargainprice; } โมฆะสาธารณะ setBargainPrice (double bargainprice) {this.bargainPrice = การต่อรองราคา; } สตริงสาธารณะ getCreateTime () {return createTime; } โมฆะสาธารณะ setCreateTime (String createTime) {this.createTime = createTime; } สตริงสาธารณะ getDetaIlUrl () {return detailUrl; } โมฆะสาธารณะ setDetaIlUrl (String detailuRl) {this.detailUrl = detailUrl; } public String getImages () {return images; } โมฆะสาธารณะ setImages (ภาพสตริง) {this.images = images; } public int getNum () {return num; } โมฆะสาธารณะ setNum (int num) {this.num = num; } public int getPid () {return pid; } โมฆะสาธารณะ setPID (int pid) {this.pid = pid; } สาธารณะ double getPrice () {ราคาคืน; } โมฆะสาธารณะ setPrice (ราคาสองเท่า) {this.price = ราคา; } public int getpScid () {return pscid; } โมฆะสาธารณะ setpScid (int pscid) {this.pscid = pscid; } public int getSelected () {return เลือก; } โมฆะสาธารณะ setSelected (int เลือก) {this.selected = เลือก; } public int getSellerId () {return sellerId; } โมฆะสาธารณะ setSellerId (int sellerId) {this.sellerId = sellerId; } สตริงสาธารณะ getSubhead () {return subhead; } โมฆะสาธารณะ SetSubhead (Subhead String) {this.subhead = subhead; } สตริงสาธารณะ getTitle () {return title; } โมฆะสาธารณะ settitle (ชื่อสตริง) {this.title = title; - แอป
คลาสสาธารณะ MyApp ขยายแอปพลิเคชัน {@Override โมฆะสาธารณะ onCreate () {super.onCreate (); fresco.initialize (นี้); - ดูเลเยอร์
เขียนสองอินเทอร์เฟซก่อน
ส่วนต่อประสานสาธารณะ icart {void showlist (รายการ <cartbean.databean> grouplist, รายการ <list <cartbean.databean.listbean >> childlist);} อินเทอร์เฟซสาธารณะ iview <t> {Void Showbean (T T); เป็นโมฆะ showstr (สตริง s);}เค้าโครงหน้าหลัก
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <linearlayout xmlns: Android = "http://schemas.android.com/apk/res/android" xmlns: app = "http://schemas.android.com xmlns: tools = "http://schemas.android.com/tools" Android: layout_width = "match_parent" Android: layout_height = "match_parent" Android: Orientation = "Vertical" Android: id = "@+id /elv" Android: layout_weight = "1" Android: layout_width = "wrap_content" Android: layout_height = "wrap_content" /> <LinearLayout Android: layout_weight = "9" Android: layout_height = "match_parent"> <ช่องทำเครื่องหมาย Android: id = "@+id /quanxuan" Android: layout_width = "wrap_content" Android: layout_height = "wrap_content" /> Android: layout_height = "wrap_content" /> <linearlayout Android: layout_marginleft = "50dp" Android: การวางแนว = "แนวตั้ง" Android: layout_width = "wrap_content" Android: layout_height = "wrap_content" Android: layout_width = "wrap_content" Android: layout_height = "wrap_content" Android: text = "ราคารวม: 0.0" /> <TextView Android: text = "Total 0 รายการ" Android: id = "@+tv_count" Android: layout_height = "wrap_content" /> < /linearlayout> <textView Android: text = "การชำระเงินทั้งหมด" Android: background = "#ffd82020" Android: layout_marginleft = "100dp" Android: layout_width = "Wrap_cont </linearLayout> </leinearLayout>
หน้าหลัก
MainActivity ระดับสาธารณะขยาย AppCompatactivity ใช้ icart {ส่วนตัว ExpandableListView Melv; ช่องทำเครื่องหมายส่วนตัว Mquanxuan; TextView ส่วนตัว Mzongjia; TextView ส่วนตัว MTVCount; ส่วนตัว myexpandableadapter myexpandableadapter; @Override ป้องกันโมฆะ onCreate (Bundle SavedInstancestate) {super.oncreate (savedinstancestate); SetContentView (R.Layout.Activity_Main); initView (); ใหม่ cartpresenter (นี้) .getCart (); EventBus.getDefault (). ลงทะเบียน (นี่); mquanxuan.setonclicklistener (ใหม่ view.onclicklistener () {@Override โมฆะสาธารณะ onclick (ดู v) {myexpandableadapter.qx (mquanxuan.ischecked ());}}); } private void initView () {melv = (expandableListView) findViewById (r.id.elv); mquanxuan = (ช่องทำเครื่องหมาย) findViewById (r.id.quanxuan); mzongjia = (textView) findViewById (r.id.zongjia); mtvCount = (textView) findViewById (r.id.tv_count); } @Override Public Void Showlist (รายการ <cartbean.databean> grouplist, รายการ <list <cartbean.databean.listbean >> childlist) {myexpandableadapter = myexpandableadapter ใหม่ melv.setAdapter (myexpandableadapter); สำหรับ (int i = 0; i <grouplist.size (); i ++) {melv.expandgroup (i); }} // รับค่าที่ส่ง @subscribe โมฆะสาธารณะ onpriceAndCount (countandprice cp) {mzongjia.settext ("ทั้งหมด"+cp.getCount ()+"รายการ"); mtvcount.settext ("ทั้งหมด:"+cp.getPrice ()); } // รับค่าที่ส่ง @Subscribe โมฆะสาธารณะ onPriceAndCount1 (เหตุการณ์ MessgeEvent) {// เปลี่ยนสถานะ mquanxuan.setchecked (Event.ischeck ()); } @Override void ondestroy () {super.ondestroy (); EventBus.getDefault (). Unregister (นี่); -เค้าโครงหน้าสอง
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <linearlayout xmlns: Android = "http://schemas.android.com/apk/res/android" xmlns: tools = "http://schemas.andrs.andrs.android.com/tools Android: layout_height = "match_parent" Android: Orientation = "แนวตั้ง" Android: id = "@+id/activity_add" เครื่องมือ: context = "com.bwie.zhangzhen20170108.addactivity"> <com.facebook.drawee.view Android: id = "@+id /xqsdv1" Android: layout_gravity = "center" Android: layout_height = "300dp" /> <textView Android: id = "@+id /tvtitle1" Android: layout_width = "Match_parent" Android Android: การปฐมนิเทศ = "แนวนอน" Android: layout_width = "Match_parent" Android: layout_height = "wrap_content"> <ปุ่ม Android: id = "@+id/tiaozhuan1" Android: layout_weight = "1" Android: layout_height = "wrap_content"/> <ปุ่ม Android: id = "@+id/tianjia1" Android: layout_weight = "1" Android: text = "เพิ่มลงในรถเข็น" Android: layout_width = "Match_parent" Android
การใช้รหัสตะกร้าสินค้า
Addactivity ระดับสาธารณะขยาย AppCompatActivity ใช้ view.onclickListener, iview {ส่วนตัว SimpledRaweeView MXQSDV; Private TextView Mtvtitle; ปุ่มส่วนตัว mtiaozhuan; ปุ่มส่วนตัว mtianjia; maddactive ส่วนตัว linearlayout; XQPRESENTER ส่วนตัว XQPRESENTER; @Override ป้องกันโมฆะ onCreate (Bundle SavedInstancestate) {super.oncreate (savedinstancestate); SetContentView (R.Layout.Activity_ADD); initView (); xqpresenter = new xqpresenter (นี้); xqpresenter.getxq (); } private void initView () {mxqsdv = (simpledRaweeView) findViewById (r.id.xqsdv1); mtvtitle = (textView) findViewById (r.id.tvtitle1); mtiaozhuan = (ปุ่ม) findViewById (r.id.tiaozhuan1); mtiaozhuan.setonclicklistener (นี่); mtianjia = (ปุ่ม) findViewById (r.id.tianjia1); mtianjia.setonclicklistener (นี่); maddactivity = (linearlayout) findViewById (r.id.activity_add); } @Override โมฆะสาธารณะ onClick (ดู V) {switch (v.getId ()) {ค่าเริ่มต้น: break; // ข้ามไปยัง mainactivity (ตะกร้าสินค้า) case r.id.tiaozhuan1: startactivity (ความตั้งใจใหม่ (นี่, mainactivity.class)); หยุดพัก; กรณี r.id.tianjia1: xqpresenter.getAdd (); หยุดพัก; }} @Override โมฆะสาธารณะ ShowBean (Object O) {XQBean XQBean = (XQBean) o; xqbean.databean data = xqbean.getData (); String S = data.getImages (). แยก ("// |") [0]; uri uri = uri.parse (s); // ที่อยู่ที่แปลงเป็น URI MXQSDV.SetImageuri (URI); mtvtitle.settext (data.getTitle ()+"/n"+data.getPrice ()); } @Override โมฆะสาธารณะ showstr (สตริง s) {toast.maketext (this, s, toast.length_short). show (); - แพ็คเกจ EventBus
กำหนดระดับปริมาณและราคา
Countandprice ชั้นเรียนสาธารณะ {จำนวน int ส่วนตัว; ราคา int ส่วนตัว; public int getCount () {นับคืน; } โมฆะสาธารณะ setCount (จำนวน int) {this.count = count; } public int getPrice () {ราคาคืน; } โมฆะสาธารณะ setPrice (ราคา int) {this.price = ราคา; -เหตุการณ์
ชั้นเรียนสาธารณะ MessgeEvent {เช็คบูลีนส่วนตัว; บูลีนสาธารณะ ischeck () {เช็คคืน; } โมฆะสาธารณะ setCheck (ตรวจสอบบูลีน) {this.check = ตรวจสอบ; - แบบอย่าง
ใช้อินเทอร์เฟซของเลเยอร์โมเดลของหน้ารายละเอียด
อินเตอร์เฟสสาธารณะ ixqmodel {โมฆะสาธารณะ getxq (int pid, str str, final onnetlisenter <xqbean> cgsb);}ใช้โมเดลหน้ารายละเอียด
คลาสสาธารณะ XQModel ใช้ ixqModel {@Override โมฆะสาธารณะ getXQ (int pid, str str, onnetlisenter สุดท้าย <xqbean> onnetlisenter) {flowable <xqbean> flowable = retrofithepler.getServiceapi () flowable.observeon (Androidschedulers.mainthread ()) .subscribeon (schedulers.io ()) .subscribe (ผู้บริโภคใหม่ <XqBean> () {@Override โมฆะสาธารณะยอมรับ (xqbean xqbean) } โมฆะสาธารณะ getAdd (int uid, int pid, str str, onnetlisenter สุดท้าย <dadcart> onnetlisenter) {flowable <dadcart> flowable = retrofithepler.getServiceApi () getMSG (uid, pid, str); flowable.observeon (Androidschedulers.mainThread ()) .subscribeon (schedulers.io ()) .subscribe (ผู้บริโภคใหม่ <AddCart> () {@Override void ยอมรับ (addCart addCart) -รถเข็นช้อปปิ้ง
คลาสสาธารณะ cartmodel {โมฆะสาธารณะ getCart (int uid, str str, onnetlisenter สุดท้าย <cartbean> onnetlisenter) {flowable <cartbean> flowable = retrofithepler.getServiceApi () getCart (uid, str); flowable.observeon (Androidschedulers.mainthread ()) .subscribeon (schedulers.io ()) .subscribe (ผู้บริโภคใหม่ <Cartbean> () {@Override โมฆะสาธารณะยอมรับ (cartbean cartbean); - ชั้นนำเสนอ
p-layer ของหน้ารายละเอียด
คลาสสาธารณะ XQPresenter {ส่วนตัว XQModel XQModel; iview ส่วนตัว iview; สาธารณะ xqpresenter (iview iview) {xqmodel = ใหม่ xqmodel (); this.iview = iview; } โมฆะสาธารณะ getxq () {xqmodel.getxq (12, "Android", ใหม่ onnetlisenter <xqbean> () {@Override ความสำเร็จสาธารณะสาธารณะ (XQBean XQBean) {iview.showbean (xqbean);}}); } โมฆะสาธารณะ getAdd () {xqmodel.getAdd (3043, 12, "Android", onnetLisenter ใหม่ <AddCart> () {@Override ความสำเร็จสาธารณะสาธารณะ -P-level ของตะกร้าสินค้า
คลาสสาธารณะ cartpresenter {ส่วนตัว icart icart; cartmodel cartmodel สุดท้าย; cartpresenter สาธารณะ (icart icart) {this.icart = icart; cartmodel = new cartmodel (); } โมฆะสาธารณะ getCart () {cartmodel.getCart (3043, "Android", onnetlisenter ใหม่ <CartBean> () {@Override เป็นโมฆะสาธารณะที่ประสบความสำเร็จ arraylist <> (); - -อะแดปเตอร์
คลาสสาธารณะ MyExpandableAdapter ขยาย BaseExpandableLiStadapter {รายการส่วนตัว <CartBean.Databean> GroupData; บริบทส่วนตัว รายการส่วนตัว <list <cartbean.databean.listbean >> ChildList; สาธารณะ myexpandableadapter (รายการ <cartbean.databean> GroupData บริบทบริบทรายการ <รายการ <cartbean.databean.listbean >> childList) {this.groupData = GroupData; this.context = บริบท; this.childList = ChildList; } @Override สาธารณะ int getGroupCount () {return groupData.size (); } @Override สาธารณะ int getChildRencount (int groupposition) {return childList.get (groupposition) .size (); } @Override วัตถุสาธารณะ getGroup (int groupposition) {return groupData.get (groupposition); } @Override วัตถุสาธารณะ getChild (int groupposition, int childposition) {return null; } @Override สาธารณะยาว getGroupId (int groupposition) {return groupposition; } @Override สาธารณะ 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()); //Click the status of the first-level checkbox holder.group_cb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dataBean.setCheck(holder.group_cb.isChecked()); //Change the status of all children changeChildState(groupPosition,holder.group_cb.isChecked()); EventBus.getDefault().post(jS()); //Judge the status of all selected by judging the checkbox of the first level 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 click event holder.child_cb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listBean.setCheck(holder.child_cb.isChecked()); EventBus.getDefault().post(jS()); //If the checkBox of the second level is selected, let the checkBox of the first level checkBox check if(holder.child_cb.isChecked()) { if (ischeckAllchild(groupPosition)) { //Change the status of the first level checkBox changeGroupstatus(groupPosition,true); //Change the status of the selected state by judging the status of the first level CheckBox to changeMianQXstatus(checkGroupAll()); } }else{ changeGroupstatus(groupPosition,false); changeMianQXstatus(checkGroupAll()); } notifyDataSetChanged(); } }); //Click add function 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()); } } }); //Click the function of decreasing holder.jian.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int cou = listBean.getCou(); if(cou==1) { Toast.makeText(context, "The minimum number is 1", Toast.LENGTH_SHORT).show(); return;} holder.tv_num.setText(--cou+""); listBean.setCou(cou); if (holder.child_cb.isChecked()) { EventBus.getDefault().post(jS()); } } }); //Click to delete 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; } /** * Determine that all the second level is CheckBox or not checked* */ 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; } /** * Calculate quantity and price* Get the second-level CheckBox by traversing the first-level. If it is the selected selected state, count their total quantity and price*/ 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(jiaage); return countAndPrice; } /** * Change the status of the first-level list*/ private void changeGroupstatus(int groupPosition,boolean flag ){ CartBean.DataBean dataBean = groupdata.get(groupPosition); dataBean.setCheck(flag); } /** * Change the status of all selected* */ private void changeMianQXstatus(boolean flag){ MessgeEvent messageEvent = new MessgeEvent(); messageEvent.setCheck(flag); EventBus.getDefault().post(messgeEvent); } /** * Determine whether all the first level are selected*/ private boolean checkGroupAll(){ for (int i = 0; i < groupdata.size(); i++) { if(!groupdata.get(i).isCheck()){ return false; } } return true; } /** * Change the status of all children*/ 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); } } /** * Change all selected*/ 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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。