Artikel ini membagikan kode spesifik untuk tampilan keranjang belanja implementasi retrofit RXJAVA untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Tunjukkan kepada semua orang rendering dulu
Struktur kerangka kerja:
1. Kerangka Proyek: MVP, pemuatan gambar dilakukan oleh fresco, permintaan jaringan diimplementasikan menggunakan okhttp+retrofit (enkapsulasi sendiri, tambahkan mode singleton),
2. Lengkapi penambahan data keranjang belanja (jika tidak ada data pada antarmuka, Anda dapat menambahkan data menggunakan alat antarmuka).
3. Kustomisasi tampilan untuk mengimplementasikan tombol penambahan dan pengurangan. Setiap kali Anda mengklik Tambah dan Kurangi, jumlah total dan total harga dalam item harus diubah sesuai.
4. Ketika kuantitasnya adalah 1, klik tanda minus, kuantitasnya tetap tidak berubah, dan roti panggang meminta pengguna bahwa angka minimum adalah 1.
5. Jumlah total dan total harga di bagian bawah adalah total harga dan jumlah total dalam semua item item. Jika harga kuantitas di setiap item diubah, jumlah total harga total di bagian bawah harus ditautkan ke sana.
6. Implementasikan fungsi pilihan balik pilihan tunggal, masukkan pilihan default untuk pertama kalinya, jumlah total dan total harga tidak termasuk dalam data terbawah ketika item tidak dipilih. Ketika keadaan yang dipilih diubah, jumlah total dan total harga bagian bawah dapat dimodifikasi dengan benar.
7. Klik tombol Hapus untuk menghapus item. Jumlah total dan total harga di bagian bawah dapat dimodifikasi dengan benar, dan data antarmuka akan dihapus.
Tambahkan dependensi yang diperlukan dan izin jaringan
Compile 'com.squareup.retrofit2: retrofit: 2.0.0-beta4' // retrofit2 paket yang diperlukan kompilasi 'com.squareup.retrofit2: converter-gson: 2.0.0-beta4' // Paket Dependensi GSON ConverterFactory's GSON GSON GSON ConverterFactory's GSON 'com.squareup.retrofit2: converter-scalars: 2.0.0-beta4' // Paket Dependensi String ConverterFactory 'io.reactivex.rxjava2: rxjava: 2.1.3'compile' io.reactivex.rxjava: RXPile: RXPile 'IO.REACTIFX.RXJAVA2: 2.1.3'Compile' 'com.squareup.retrofit2: adaptor-rxjava2: 2.3.0'compile' de.greenrobot: eventbus: 3.0.0-beta1'compile 'com.facebook.fresco: fresco: 0.11.0'
<use-intimison android: name = "android.permission.internet" />
Subkontrak sebelum menggunakan mode MVP
Paket bersih
API
Kelas Publik API {host public static 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 <dildcart> getMsg (@Query ("uid") int uid, @Query ("pid") int pid, @Query ("source") string str); @Get ("getCarts") flowable <dartbean> getCart (@Query ("uid") int uid, @Query ("source") string str);}Antarmuka yang berhasil
antarmuka publik onnetlisenter <t> {void sukses (t t);}Kemasan retrofit
retrofithepler kelas publik {public static OKHTTPClient okhttpClient; ServiceAPi Serviceapi Statis Publik; / *** Eksekusi prioritas*/ statis {getokhttpclient (); } public static OKHTTPClient getokhttpClient () {if (okhttpClient == null) {disinkronkan (okhttpclient.class) {if (okhttpclient == null) {okhttpclient = new OKHTTPClient (); }} return okhttpclient; } public static ServiceApI getServiceApI () {if (serviceApI == null) {disinkronkan (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 return.create (tclass); }} Paket kacang
Kelas Bean untuk Halaman Detail
kelas publik xqbean {/** * msg: * penjual: {"deskripsi": "Saya seorang pedagang 2", "ikon": "http://120.27.23.105/images/icon.png", "name": "Merchant 2", "ProductNums": 999, "59,": ":": ":" 999, ":": ":" "," DATA ":" DATA ":" DATA ":" DATA, " {"BARGAINPRICE": 111.99, "CreateTime": "2017-10-14T21: 48: 08", "DetailUrl": "https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=ape=pshagner= &campagner= &campagner= &campagner= &campagner= &campagner= &campagner= &campagner= &campagner= &campagner= &campagner= &campagner= &campagner= &campagner= &camproid= 335139774 & utm_term = qq friends "," gambar ":" 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 "," ItemType ": 2 , "PID": 9, "Harga": 78.99, "PSCID": 1, "Salenum": 2356, "Sellerid": 2, "Subhead": "Setiap Light-Neam Festival, tidak dapat menjadi lebih sederhana. Jari "," Judul ":" Beijing Daoxiangcun Daoxiangcun Festival Pertengahan Musim Gaya Bulan MoonCake Kotak Hadiah MoonCake tua Beijing 655g "} */ Private String MSG; Penjual Penjual Pribadi; kode string pribadi; data databean pribadi; Public String getMSG () {return msg; } public void setMSG (string msg) {this.msg = msg; } Public SellerBean goteller () {penjual kembali; } public void setseller (penjual penjual) {this.seller = penjual; } public string getCode () {return code; } public void setCode (kode string) {this.code = kode; } public databean getData () {return data; } public void setData (data databean) {this.data = data; } Public Static Class SellerBean {/** * Deskripsi: Saya seorang pedagang 2 * ikon: http://120.27.23.105/images/icon.png * Nama: Pedagang 2 * ProductNums: 999 * Skor: 5.0 * penjual: 2 */deskripsi string pribadi; ikon string pribadi; nama string pribadi; Produk int private int; skor ganda pribadi; Private Int Sellerid; string publik getDescription () {return description; } public void setDescription (deskripsi string) {this.description = description; } public string getIcon () {return icon; } public void seticon (ikon string) {this.icon = icon; } public string getName () {return name; } public void setName (name string) {this.name = name; } public int getProductNums () {return productNums; } public void setProductNums (int productNums) {this.productnums = ProductNums; } public double getScore () {skor return; } public void setScore (skor ganda) {this.score = skor; } 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 * Gambar: Gambar: https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/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 * Harga: 78.99 * PSCID: 1 * Penjualan: 2356 * SellerID: 2 * Subpos: setiap festival tengah musim tidak bisa sederhana. Di mana pun Anda berada, Anda selalu membutuhkan sepotong kue untuk membuat hidup Anda lebih lengkap. JD MoonCakes Make Love Lengkap JD yang Dioperasikan Sendiri, Pengiriman Petir, Lebih Banyak Kejutan, Klik Dengan Jari Anda * Judul: Beijing Daoxiangcun Daoxiangcun Festival Pertengahan Musim Gugur MoonCake MoonCake Old Beijing MoonCake Gift Box 655G */ Private Double Bargainprice; Private String CreateTime; detailur string pribadi; gambar string pribadi; private int itemType; private int pid; harga ganda pribadi; private int pSCID; Salesenum int pribadi; Private Int Sellerid; subhead string pribadi; judul string pribadi; Publik getBargainPrice () {return barakprice; } public void setBargainPrice (double bargainprice) {this.bargainprice = barakprice; } 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 gambar; } public void setImages (gambar string) {this.images = gambar; } 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 () {harga kembali; } public void setPrice (harga ganda) {this.price = harga; } public int getPscid () {return pScID; } public void setpscid (int pScID) {this.pscid = pScid; } public int getSalenum () {return salesenum; } public void setSalenum (int salesenum) {this.salenum = salesenum; } 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; }}}Kacang ditambahkan ke kereta
kelas publik addCart {private string msg; kode string pribadi; Public String getMSG () {return msg; } public void setMSG (string msg) {this.msg = msg; } public string getCode () {return code; } public void setCode (kode string) {this.code = kode; }}Kategori produk
Kelas Publik Cartbean { /*** MSG: Minta Kode Sukses*: 0* Data: [{"Daftar": [{"BARGAINPRICE": 22.9, "CreateTime": "2017-10-14T21: 48: 08", "DetailUrl": "https://item.m.jd.com/product/2542855.html?utm_source=android & utm_medium = appshare & utm_campaign = t_335139774 & utm_term = qq friends "," gambar ":" https://m.360buyimg.com/n0/jfs/t1930/284/28656629620/390243/284/2865629620/390243/284/2865629620/39024/284/284/286562/3962/284/284/284/284/284/284/284/284/284/284/284/284/284/284/284 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,"price":288,"pscid":2,"selected":0,"sellerid":1,"subhead":"Three Squirrels snack special offer, 50 off for the area over 99, 100 off for the area over 199, hurry up and buy it 》 "," Judul ":" Tiga Squirrel Nuts Roasted Snacks Creamy Pecan 225g/Bag "}, {" BARGAINPRICE ": 11800," CreateTime ":" 2017-10-10t17: 33: 37 "," detailurl ":" https://itempl.m.jd.com/poduct "/petailUrl ":" https://itemple.m.jd.com/product "/petail1107/ .html? UTM#_Source = Androidapp & UTM#_Medium = Appshare & UTM#_Campaign = t#_335139774 & utm#_term = qqfriends "," gambar ":" https:/m.360buyimg.com/nn0/n0/nfs/tps:67 /155/2098998076/156185/6cf95035/595dd5a5nc3a7dab5.jpg!q70.jpg" ,"num":2, " PID ": 57," Harga ": 5199," PSCID ": 40," Dipilih ": 0," Sellerid ": 1," Subhead ":" 【i5 MX150 2G Video Memory] Full HD Sempit Bezel 8G Memory 256 SSD Mendukung Pengenalan Sidik Jari Sistem Win10 Pra-Pemasangan "," Judul ":" Xiaomi (MI) Air 13.3-inci Full Metal Notebook Tipis (I5-7200U 8G 256G PCLE SSD MX150 2G Independent Silver/r/n "}, {" BargainPrice ": 99," CreateTime ":" 2017-10-14t21: 38: 26 "," DetailUrl ":" https://item.m.jd.com/product/4345173.html?utm#_source Bagikan & UTM#_Campaign = t#_335139774 & utm#_term = qq friends "," gambar ":" 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," Harga ": 2999," PSCID ": 39," Dipilih ": 0," SellerID ": 1," Kamera Dual, 6grom. Monster! "," Judul ":" OnePlus Mobile 5 (A5000) 6GB+64GB Yueyanhui Koneksi Jaringan Lengkap Dual-Dual Standby Mobile China Unicom Telecom 4G Ponsel "}]," SellerName ":" Merchant 1 "," SellerId ":" 1 "}, {" Daftar ": [{" BARGAINPRICE ": 6666," CreateTime ":" 2017-10-10t16: 01: 31 "," DetailUrl ":" https://item.m.jd.com/produk/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/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,"price":234,"pscid":39,"selected":0,"sellerid":2,"subhead":"【New iPhone launch】The new generation of iPhone makes the smart look more Berbeda "," Judul ":" Apple iPhone 8 Plus (A1864) 64GB Golden Mobile Unicom Telecom 4G Mobile "}]," SellerName ":" Merchant 2 "," SellerId ":" 2 "}, {" Daftar ": [{" BARGAINPRICE ": 111.99," CreateTime ":" 2017-10-03t23: 43: 53 "," DetailUrl ":" https://item.m.jd.com/produksi/4719303.htps:/item. utm_medium = appshare & utm_campaign = t_335139774 & utm_term = qq friends "," gambar ":" 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! "PSCID": 1, "Dipilih": 0, "Sellerid": 5, "Subhead": "Setiap festival pertengahan musim gugur tidak bisa sederhana. Di mana pun Anda berada, Anda selalu membutuhkan kue untuk membuat hidup Anda lebih lengkap. JD MoonCake membuat cinta lebih lengkap. MoonCake Old Beijing MoonCake Gift Box 655G "}]," SellerName ":" Merchant 5 "," Sellerid ":" 5 "}, {" Daftar ": [{" Bar GainPrice ": 11800," CreateTime ":" 2017-10-03T23: 53: 28 "," DetailUrl ":" https://mitem.jd.hk/ware/view.act Ion? WareId = 198853309 & CacheKey = 1ACB07A701ECE8D2434A6AE7FA6870A1 "," Gambar ":" 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: //.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/j FS/T5878/60/2557817477/30873/4502B606/593276Can5a7d6357.jpg! Q70.jpg "," Num ":" PID ": 62," Price ": 15999," PSCID ": 40," PID ": 62," Price ": 15999," PSCID ": 40," Suatu Suatu 40, "": "" Produk kantor untuk 1 yuan dan kembali ke tiket kereta api untuk 5 yuan (setelah pengembalian selesai) "," judul ":" pembelian global model apel baru macbook pro apple laptop perak vp2 baru 13 inci bar i5/8g/256g " 6 "," SellerId ":" 6 "}, {" Daftar ": [{" BARGAINPRICE ": 399," CreateTime ":" 2017-10-03t23: 53: 28 "," DetailUrl ":" https://item.m.jd.com/produksi/143982227.htps UTM_SOURCE = AndroidApp & UTM_MEDIUM = APPSHARE & UTM_CAMPAIGN = T_335139774 & UTM_TERT = QQFriends " , "gambar": "https://m.360buyimg.com/n0/jfs/t5887/201/859509257/6994/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/59224c24nn3324d5f4.jpg! Q70.jpg "," num ": 1," pid ": 86," harga ": 777," pscid ": 85," piece, "poors," 2, "2 Piece," 2 Piece, "2 Piece," 2, " Cuci sederhana lima kantong celana panjang lurus celana ketat 941825 abu -abu gelap 33/32 (175/84a) "}]," jual nama ":" pedagang 7 "," SellerId ":" 7 "}, {" Daftar ": [{" BARGAINPRICE ": 111.99," Createtime ":" 2017-10-14t21: 39: 05 "," DetailUrl ":" https://item.m.jd.com/prod UCT/4719303.html? utm_source = androidapp & utm_medium = appshare & utm_campaign = t_335139774 & utm_term = qq friends "," gambar ":" 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 "," num ": 12," hal ID ":" Harga ": 118," PSCID ": 1," Dipilih ": 0," Sellerid ": 17," Subhead ":" Setiap Festival Pertengahan Musim Laki-laki tidak bisa sederhana. DAOXIANGCUN Festival Pertengahan Musim Gaya MoonCake Kotak Hadiah MoonCake tua Beijing 655g "}]," SellerName ":" Pedagang 17 "," Sellerid ":" 17 "}, {" Daftar ": [{" Barak ": 05," CreateTime ":" 2017-14 "", "2017", " : //item.m.jd.com/product/4719303.html? utm_source = androidapp & utm_medium = appshare & utm_campaign = t_335139774 & utm_term = qq friends "," gambar ":" https: // m .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,"price":299,"pscid":1,"selected":0,"sellerid":18,"subhead":"Every Mid-Autumn Festival cannot be simple. No matter where you are, you always need a piece of cake to make your life more complete, JD mooncakes make love more complete, JD self-operated, lightning delivery, more surprises, please poke it with your finger","title":"Beijing Daoxiang Village Daoxiang Village Festival Pertengahan Musim Gugur MoonCake Kotak Hadiah MoonCake Beijing Old 655g "}]," Sellername ":" Merchant 18 "," SellerId ":" 18 "}, {" Daftar ": [{" BargainPrice ": 11800," Createtime ":" 2017-10-03t23: 53: 28 "," DetailUrl ":" https://mitem.jd.hk/ware /view.action?wareid=19888853309&cacheKey=1ACB07A701ECE8D2434A6AE7FA6870A1" ,,"Images":"https://m.360buyimg.com/n0/jfs/t6130/97/11 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," harga ": 37999.99," pScid ": 40," dipilih ": 0," Sellerid ": 20," Subhead ": Beli beberapa Produk Kantor Komputer untuk 1 Yuan dan Dapatkan Kupon 5 Yuan" untuk Tiket Tiket (LITAP BUKU TOKOB ADALAH PENGEMBALIAN KOMPUTER UNTUK 1 Yuan dan Dapatkan 5 Yuan Kupon Yuan untuk Tiket Kereta Tiket (LITH PENGEMBALIAN KOPUSI KOMPUTER OVER) " VP2 BAR 13-INCH BARU I5/8G/256G "}]," SellerName ":" Pedagang 20 "," SellerId ":" 20 "}, {" Daftar ": [{" BARGAINPRICE ": 111.99," CreateTime ":" 2017-10-14t21: 39: 05 "," DetailUrl ":" https://item.m.jd.com/produkt/4719303.htps: https p & utm_medium = appshare & utm_campaign = t_335139774 & utm_term = qq friends "," gambar ":" 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," Pric E ": 88.99," PSCID ": 1," Dipilih ": 0," Sellerid ": 21," Subhead ":" Setiap Festival Pertengahan Musim Gaya tidak bisa sederhana. DAOXIANGCUN Festival Pertengahan Musim Gugur MoonCake Old Beijing MoonCake Gift Box 655G "}]," SellerName ":" Merchant 21 "," Sellerid ":" 21 "}]] */ MSG string pribadi; kode string pribadi; DAFTAR PRIBADI <Batabean> Data; Public String getMSG () {return msg; } public void setMSG (string msg) {this.msg = msg; } public string getCode () {return code; } public void setCode (kode string) {this.code = kode; } Daftar Publik <databean> getData () {return data; } public void setData (Daftar <databean> data) {this.data = data; } Databean kelas statis publik { /*** Daftar: [{"BargainPrice": 22.9, "CreateTime": "2017-10-14T21: 48: 08", "DetailUrl": "https://item.m.jd.com/product/2542855.html?utm_source=androidApap &utm_med IUM = AppShare & utm_campaign = t_335139774 & utm_term = qq friends "," Images ":" https://m.360buyimg.com/n0/jfs/t1930/284/2865629620/390243/e3ade fnbd3a1235.jpg! q70.jpg | https: //m.360buyimg.com/n0/jfs/t2137/336/2802996 626/155915/E5E90D7A/56F0A09CN33E01BD0.JPG! Q70.jpg | https: //m.360buyimg.c OM/N0/JFS/T1882/31/2772215910/389956/C8DBF370/56F0A0A2NA0C86A6.JPG! Q70 .jpg | https: //m.360buyimg.com/n0/jfs/t2620/166/2703833710/312660/531aa913 /57709035n33857877.jpg!q70.jpg" ,"num":1,3 Ini》 "," judul ":" Tiga Squirrel Nuts Roasted Snacks Creamy Pecan 225g/Bag "}, {" Bargainprice ": 11800," CreateTime ":" 2017-10-10t17: 33: 37 "," detailURL ":" https://itemple.m.jd.com/podod.com/prodd.com/prodod (detail43107 TML? UTM#_Source = AndroidApp & UTM#_Medium = Appshare & UTM#_Campaign = t#_335139774 & utm#_term = qqfriends "," gambar ":" https://m.360buymg.com/n0/jfs/tps:6700/ 155/2098998076/156185/6cf95035/595dd5a5nc3a7dab5.jpg! Q70.jpg "," num ": 2," pid ": 57," harga ": 5199," pscid ": 40," dipilih ": 0," Price ": 5199," pScid ": 40," "【【【【【【【【【【【【【【【【【【【【【【【【【【【l SUBOD" MX150 2G Video Memory] Full HD Sempit Bezel 8G Memory 256 SSD Mendukung Pengenalan Sidik Jari Sistem Win10 Pra-Pemasangan "," Judul ":" Xiaomi (MI) Air 13.3-inci Full Metal Notebook Tipis (I5-7200U 8G 256G PCLE SSD MX150 2G Independent Silver/r/n "}, {" BargainPrice ": 99," CreateTime ":" 2017-10-14t21: 38: 26 "," DetailUrl ":" https://item.m.jd.com/product/4345173.html?utm#_source Bagikan & UTM#_Campaign = t#_335139774 & utm#_term = qq friends "," gambar ":" 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," Harga ": 2999," PSCID ": 39," Dipilih ": 0," SellerID ": 1," Kamera Dual, 6grom. Monster! "," Judul ":" OnePlus Mobile 5 (A5000) 6GB+64GB Yueyanhui Jaringan Lengkap Hubungkan Dual Sim Dual Standby China UNICOM Telecom 4G Mobile "}] * Sellername: Pedagang 1 * Sellerid: 1 */ Private String Sellername; Private String SellerID; Daftar Pribadi <ListBean> Daftar; cek boolean pribadi; public boolean ischeck () {check return; } public void setCheck (boolean check) {this.check = check; } public String getSellerName () {return jualname; } public void setSellerName (String SellerName) {this.sellerName = SellerName; } public String gotellerId () {return sellerId; } public void setsellerId (string sellerid) {this.sellerid = sellerid; } Daftar Publik <ListBean> getList () {daftar kembali; } public void setList (daftar <listBean> daftar) {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=qqriends * gambar: 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/56f0a0a2na0c86A6.jpg! Q70.jpg | https: //m.360buyimg.com/n0/jfs/t2620/166/2703833710/312660/531aa913/57709035n33857877.jpg! Q70.jpg * BUM: 1 * PID: 24 * Harga: 288.0 * PSCID: 2 * Dipilih: 0 * Sellerid: 1 * Subpos: Tiga Snacks Snacks Penawaran Khusus, 50 Untuk Pembelian Lebih dari 99 Di Area, 100 Untuk Pembelian Lebih dari 199 Di Area, Cepat dan Beli》 * Judul: Tiga Squirrel Nuts Snacks Snacks Creamy Flavored Pygroavored Pygoorping Pyguum PyGumaum * Double Nuts Snacks Snacks Creamy Flavored Pygouveed Pygouving Pyguum Private String CreateTime; detailur string pribadi; gambar string pribadi; private int num; private int pid; harga ganda pribadi; private int pSCID; int private int dipilih; Private Int Sellerid; subhead string pribadi; judul string pribadi; private int cou = 1; publik int getCou () {return cou; } public void setCou (int cou) {this.cou = cou; } pemeriksaan boolean pribadi; public boolean ischeck () {check return; } public void setCheck (boolean check) {this.check = check; } public double getBArGainPrice () {return bargainprice; } public void setBargainPrice (double bargainprice) {this.bargainprice = barakprice; } 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 gambar; } public void setImages (gambar string) {this.images = gambar; } 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 () {harga kembali; } public void setPrice (harga ganda) {this.price = harga; } public int getPscid () {return pScID; } public void setpscid (int pScID) {this.pscid = pScid; } public int getSelected () {return dipilih; } public void setSelected (int dipilih) {this.selected = dipilih; } 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; }}}} aplikasi
kelas publik myapp memperluas aplikasi {@Override public void onCreate () {super.onCreate (); Fresco.initialize (ini); }} Lihat lapisan
Tulis dua antarmuka terlebih dahulu
antarmuka publik icart {void showlist (daftar <cartbean.databean> grouplist, daftar <daftar <cartbean.databean.listbean >> childlist);} Antarmuka publik IVIEW <T> {void showbean (t t); void showtr (string s);}Tata letak halaman utama
<? Xml Version = "1.0" encoding = "UTF-8"?> <linearlayout xmlns: android = "http://schemas.android.com/apk/res/android" xmlns: app = "http://schemas.android.com/apkk/resk/resk/nuto" XMLNS: Tools = "http://schemas.android.com/tools" Android: layout_width = "match_parent" android: layout_height = "match_parent" android: orientasi = "vertikal" Alat: context = "com.bwie.zhangzhen201108.main.moVivity/com.bwie.zhangzhen201108.maCIvity> 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"> <centang android: id = "@+id /quanxuan" android: layout_width = "wrap_content" android: layout_height = "wrap_content" /> <textview android: text = "Select all" android: layout_width " /> <textview:" Text = "Select All" Android: Layout_Width " /<TextView =" Text = "Select All" Android: Layout_Width " Android: layout_height = "wrap_content" /> <linearlayout android: layout_marginleft = "50dp" android: orientation = "vertikal" android: layout_width = "wrap_content" android: layout_height = "wrap_content"> <textview dan: id = layout_height = "wrap_content"> <textview dan: id = layout_height = "wrap_content"> <TextView dan: ID = ID = "" BIBLIGHT = "Zongger"> <TextView dan: ID = ID = "ID =" BIBLIGHT /"ZANGJIA"> <TextView dan: ID = ID = "ID" " Android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: text = "Total harga: 0.0" /> <textView android: text = "Total 0 item" Android: ID = "@+ID /TV_Count" Android: Layout_width = "Wrap_content" Android: Lapeout = Layout_Width = "Wrap_content" Android: Lapeout = Layout: Layout_Width = "Wrap_content"@+TV /TV_COUND: Layout_width = "wrap_content"@+tv_count: layout_ layout_width = "wrap_content" </Linearlayout> <textView android: text = "Total checkout" android: latar belakang = "#ffd82020" android: layout_marginleft = "100dp" android: layout_width = "wrap_content" android: tata letak_height = "wrap_content"/</linearlay>
Halaman utama
MainActivity kelas publik memperluas appCompatactivity mengimplementasikan icart {private expandableListView Melv; kotak centang pribadi Mquanxuan; TextView pribadi mzongjia; TextView pribadi mtvcount; pribadi myExpandableadapter myexpandableadapter; @Override Protected void onCreate (bundle savedInstanceState) {super.onCreate (saveDinstanceState); setContentView (r.layout.activity_main); initview (); CartPresenter baru (ini) .getCart (); Eventbus.getDefault (). Daftar (ini); mquanxuan.setonClickListener (view.onClickListener baru () {@Override public void onClick (view v) {myexpandableadapter.qx (mquanxuan.ischecked ());}}); } private void initview () {melv = (ExpandaBleListView) findViewById (r.id.elv); mquanxuan = (kotak centang) findViewById (r.id.quanxuan); mzongjia = (textView) findViewById (r.id.zongjia); mtvcount = (textView) findViewById (r.id.tv_count); } @Override public void showlist (daftar <cartbean.databean> grouplist, daftar <daftar <cartbean.databean.listbean >> childlist) {myexpandableadapter = myexpandableadapter baru (grouplist, ini, penenunan anak); Melv.setAdapter (MyExpandableAdapter); untuk (int i = 0; i <grouplist.size (); i ++) {melv.expandgroup (i); }} // menerima nilai yang ditransmisikan @subscribe public void onpriceandcount (countandprice cp) {mzongjia.setText ("total"+cp.getCount ()+"item"); mtvcount.setText ("Total:"+cp.getPrice ()); } // menerima nilai yang ditransmisikan @subscribe public void onpriceandcount1 (acara MessGeEvent) {// Ubah status yang dipilih mquanxuan.setchecked (event.ischeck ()); } @Override Protected void ondestroy () {super.ondestroy (); Eventbus.getDefault (). Unregister (ini); }}Tata letak halaman kedua
<? Xml Version = "1.0" encoding = "UTF-8"?> <linearlayout xmlns: android = "http://schemas.android.com/apk/res/android" xmlns: tools = "http://schemas.android.com/tools" andtth: andty: oolpparp:/schemas.android.com/tools "andtth: andth: andth: oolp: ooltp:/schemas.android.com/tools" andte "dan http: Android: layout_height = "match_parent" android: orientation = "vertikal" android: id = "@+id/activity_add" alat: context = "com.bwie.zhangzhen20170108.addactivity"> <com.faceBook.drawee.view.simpledraweeview "> <com.faceBook." 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="jump to cart" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/tianjia1" android:layout_weight="1" android:text="Add to cart" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout></LinearLayout>
Menerapkan kode keranjang belanja
AddActivity kelas publik memperluas appCompatactivity mengimplementasikan view.onClickListener, iview {private SimpleDraweeview mxqsdv; TextView pribadi mtvtitle; Tombol Pribadi Mtiaozhuan; Tombol Pribadi Mtingianjia; Maddactivity linearlayout pribadi; Private XQPresenter XQPresenter; @Override Protected void onCreate (bundle savedInstanceState) {super.onCreate (saveDinstanceState); setContentView (r.layout.activity_add); initview (); xqpresenter = xqpresenter baru (ini); xqpresenter.getxq (); } private void initview () {mxqsdv = (SimpleDraweeview) findViewById (r.id.xqsdv1); mtvtitle = (textView) findViewById (r.id.tvtitle1); mtiaozhuan = (tombol) findViewById (r.id.tiaozhuan1); mtiaozhuan.setonClickListener (ini); mtingianjia = (tombol) findViewById (r.id.tianjia1); mtingianjia.setOnclickListener (ini); madDactivity = (linearlayout) findViewById (r.id.activity_add); } @Override public void onClick (view v) {switch (v.getId ()) {default: break; //Skip to MainActivity (Shopping Cart) case R.id.tiaozhuan1: startActivity(new Intent(this,MainActivity.class)); merusak; case R.id.tianjia1: xqPresenter.getAdd(); merusak; } } @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);//Address converted to 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); } }); }}adaptor
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()); //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>
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.