Dieser Artikel teilt den spezifischen Code für RXJAVA -Nachrüst -Implementierungs -Einkaufswagen -Anzeige für Ihre Referenz. Der spezifische Inhalt ist wie folgt
Zeigen Sie allen zuerst die Renderings
Frameworkstruktur:
1. Projekt Framework: MVP, Bildlast erfolgt von Fresco, Netzwerkanforderungen werden mit OKHTTP+Retrofit implementiert (einkapseln Sie es selbst, fügen Sie den Singleton -Modus hinzu).
2. Vervollständigen Sie die Hinzufügung von Einkaufswagendaten (wenn keine Daten auf der Schnittstelle enthalten sind, können Sie Daten mit dem Schnittstellen -Tool hinzufügen).
3. Passen Sie die Ansicht an, um die Schaltfläche Addition und Subtraktion zu implementieren. Jedes Mal, wenn Sie auf Hinzufügen und Subtrahieren klicken, müssen die Gesamtzahl und der Gesamtpreis im Artikel entsprechend geändert werden.
4. Wenn die Menge 1 ist, klicken Sie auf das Minuszeichen, die Menge bleibt unverändert, und der Toast fordert den Benutzer auf, dass die Mindestzahl 1 beträgt.
5. Die Gesamtzahl und der Gesamtpreis am Ende sind der Gesamtpreis und die Gesamtzahl in allen Artikeln. Wenn der Mengenpreis in jedem Artikel geändert wird, muss die Gesamtzahl des Gesamtpreises unten mit ihm verbunden sein.
6. Implementieren Sie die Funktion von Einzelauswahl. Geben Sie zum ersten Mal die Standardauswahl ein. Die Gesamtzahl und der Gesamtpreis sind in den unteren Daten nicht enthalten, wenn das Element nicht ausgewählt ist. Wenn der ausgewählte Zustand geändert wird, können die Gesamtzahl und der Gesamtpreis des Bodens korrekt geändert werden.
7. Klicken Sie auf die Schaltfläche Löschen, um das Element zu löschen. Die Gesamtzahl und der Gesamtpreis unten können korrekt geändert werden und die Schnittstellendaten werden gelöscht.
Fügen Sie die erforderlichen Abhängigkeiten und Networking -Berechtigungen hinzu
Kompilieren Sie 'com.SquareUp.Retrofit2: Retrofit: 2.0.0-Beta4' // Retrofit2 Erforderliches Paket Compile 'com.squareup.retrofit2: Converter-Gson: 2.0.0-Beta4' // ConverterFactory's GSON-Abhängigkeitspaket Compile 'com.SquareUp.Retrofit2: Converter-Scalarars: 2.0.0-BETA4' // ConverterFactory's String Depellenty Paket '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'
<Nutzungsvermittlung Android: name = "android.permission.internet" />
Subunternehmer vor Verwendung des MVP -Modus
Netzpaket
API
öffentliche Klasse API {public static String host = "http://120.27.23.105/product/";}Serviceapi
public interface serviceapi {@get ("GetProductDetail") fließbar <xqbean> getXq (@Query ("pid") int pid, @Query ("Quelle") String Str); @Get ("addCart") fließbar <addCart> getmsg (@Query ("uid") int uid, @Query ("pid") int pid, @Query ("Quelle") String str); @Get ("getCarts") Flowable <cartbean> getCart (@Query ("uid") int uid, @Query ("Source") String Str);}Erfolgreiche Schnittstelle
öffentliche Schnittstelle OnNetliSenter <T> {void Erfolg (t t);}Verpackung nachrüsten
public class retrofithepler {public static Okhttpclient Okhttpclient; öffentliche statische Serviceapi Serviceapi; / *** Priority Execution*/ 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 (Klasse <T> tclass, String url) {retrofit retrofit = new Retrofit.builder () .baseUrl (url) .addConverterFactory (gsonConverterFactory.create ()) .client (okhttpclient)). .AddcalladapterFactory (rxjava2CalladapterFactory.create ()) //. return return.create (tclass); }} Bohnenpaket
Beanklasse für Details Seite
public class XQBean { /** * msg : * seller : {"description":"I am a merchant 2","icon":"http://120.27.23.105/images/icon.png","name":"merchant 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 "," Bilder ":" 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, "Preis": 78,99, "PSCID": 1, "Salenum": 2356, "Sellerid": 2, "Unterkopf": "Jedes Festival in der Mitte des Autumens kann nicht einfach sein. Egal wo Sie sind, Sie brauchen immer ein Stück Kuchen, um Ihr Leben vollständiger zu machen. Finger "," Titel ":" Peking Daoxiangcun Daoxiangcun Mid-Autumn Festival Mooncake Old Peking Mooncake Geschenkbox 655g "} */ private String msg; privater Verkäufer von Sellerbean; privater Zeichenfolgecode; private Datenbewohnerdaten; public String getmsg () {return msg; } public void setmsg (String msg) {this.msg = msg; } public SellerBean geteller () {Rückgabeverkäufer; } public void setseller (sellerbean seller) {this.seller = seller; } public String getCode () {return code; } public void setCode (String -Code) {this.code = code; } public DataBean getData () {returndaten; } public void setData (DatenBeandaten) {this.data = data; } public statische Klasse SellerBean {/** * Beschreibung: Ich bin ein Händler 2 * Symbol: http://120.27.23.105/images/icon.png * Name: Händler 2 * Produktnums: 999 * Punktzahl: 5.0 * Verkäufer: 2 */private String Beschreibung; privates String -Symbol; privater Zeichenfolge Name; private int productNums; private doppelte Punktzahl; private int sellerid; public String getDescription () {Rückgabe Beschreibung; } public void setDescription (String Beschreibung) {this.description = Beschreibung; } public String geticon () {return icon; } public void seticon (String -Symbol) {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 getCore () {return Score; } public void setScore (doppelte Punktzahl) {this.score = Score; } public int getellerId () {return sellerid; } public void setsellerId (int sellerId) {this.sellerId = sellerId; }} öffentliche statische Klassendatenbesitze { /** * 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_Qqqfriends * Bilder: https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4 f4e1n9a2b1532.jpg! 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 * Preis: 78,99 * PSCID: 1 * Verkäufe: 2356 * SellerID: 2 * Unterhead: Jedes Festival in der Mitte des Autumns kann nicht einfach sein. Egal wo Sie sind, Sie brauchen immer ein Stück Kuchen, um Ihr Leben vollständiger zu machen. JD Mooncakes macht die Liebe vollständiger jD selbst betrieben, blitzschnelle Lieferung, mehr Überraschungen, bitte klicken private String createtime; private String detailurl; private Stringbilder; private int ittype; private int pid; privater Doppelpreis; privat int pscid; privates Int Salesenum; private int sellerid; private String -Unterhead; privater String -Titel; public double getbargainprice () {return bargainprice; } public void setbargainprice (doppelte Bargainprice) {this.BargainPrice = bargainprice; } public String getCreateTime () {return createTime; } public void setCreateTime (String createTime) {this.createTime = CreateTime; } public String getDetailurl () {retailUrl; } public void setDetailurl (String detailUrl) {this.detailurl = detailUrl; } public String getImages () {return Images; } public void setImages (String -Bilder) {this.images = Bilder; } 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 () {Rückgabepreis; } public void setPrice (Doppelpreis) {this.price = price; } public int getpscid () {return pScid; } public void setpscid (int pScid) {this.pScid = pScid; } public int GetAsalenum () {return salesenum; } public void setSalenum (int salesenum) {this.salenum = salesenum; } public int getellerId () {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; }}}Bohne in den Wagen hinzugefügt
öffentliche Klasse addCart {private String msg; privater Zeichenfolgecode; 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; }}Produktkategorie
öffentliche Klasse Cartbean { /*** MSG: Anfrage erfolgreich* Code: 0* Daten: [{"Liste": [{"BargainPrice": 22.9, "CreateTime": "2017-10-14t21: 48: 08", "DetailUrl": "https://item.m.jd.com/producct/2542855.html; & utm_medium = appshare & utm_campaign = t_335139774 & utm_term = qqfriends "," Bilder ":" https://m.360buyimg.com/n0/jfs/t1930/284/2865629620/390243/e2de9c4/390243/e2de9c4/390243/3/390243/e2de9c4/390243/3/390243/e2de9c4/390243/e2de9c4/390243/e2de9c4/390243/e2de9c4/390243/3/390243/e2de9c4/390243/e2de9c4/390243/3/390243/3/390243/3/390243/eagade 56F0A08FNBD3A1235.JPG! 802996626/155915/E5E90D7A/56F0A09CN33E01BD0.JPG! Q70.JPG | https: //m.360buy img.com/n0/jfs/t1882/31/2772215910/389956/c8dbf370/56f0aa2na0c86ea6.jpg ! 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 》 "," Titel ":" Drei Eichhörnchen-Nüsse geröstete Snacks cremige Pecan 225g/Bag "}, {" Bargainprice ": 11800," Createtime ":" 2017-10-10t17: 33: 37 ", detailUrl": "https://item.m.jd.com/product/433333333333333338107./4333333338107/4338107./43338107 .html? utm#_source = androidapp & utm#_medium = appshare & utm#_campaign = t#_335139774 & utm#_term = qqFriends "," Bilder ":" https://m.360buyimg.com /155/2098998076/156185/6CF95035/595DDD5A5NC3A7DAB5.JPG!q70.jpg","num":2, " PID ": 57," Preis ": 5199," PSCID ": 40," ausgewählt ": 0," SellerID ": 1," Subhead ":" 【i5 MX150 2G Videospeicher] Full HD Schmale Lünette 8G Speicher 256 SSD unterstützt Fingerabdruckerkennung vorinstalliertes Win10-System "," Titel ":" Xiaomi (MI) Air 13,3-Zoll Full Metal Thin Notebook (i5-7200U 8G 256G PCLE SSD MX150 2G Unabhängiges Grafik FINGERPING FINGERPING ENGEBNISSIGKEIT WIN10) Silver/R/N "}, {" BargainPrice ": 99," CreateTime ":" 2017-10-14t21: 38: 26 "," DetailUrl ":" https://item.m.jd.com/product/4345173.htmlautm#_Source=androidApp&utm#m#mium=app Share & UTM#_campaign = t#_335139774 & utm#_term = qqFriends "," Bilder ":" https: //m.360buyimg . //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," Preis ": 2999," PSCID ": 39" Selected ": 0," Sellerid ": 1," Subhead ":" HD Dual Camera, It Cleary 2000 + 16 Millionen Prociant, 6gm-Prozess, 6GB MEHRE, IS IS CLEAR 2000 + 16 Millionen, 63-mill-mill-mill-mill-mill-mill-mill-mill-mill-mill-mill-prozess-kamera Monster! 1 "," SellerID ":" 1 "}, {" Liste ": [{" 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 "," Bilder ":" https://m.360buyimg.com/n0/jfs/t8284/363/1326459580/71585/6D3E8013/ 59B857F2N6CA75622.jpg! 6/68AF5B54/59B8480ANE8AF7F5C.JPG! 007/56140/579509D9/59B85801NFEA207DB.JPG! Q70.JPG "," Num ": 1," PID ": 46," Preis anders "," Titel ":" Apple iPhone 8 Plus (A1864) 64 GB Golden Mobile Unicom Telecom 4G Mobile "}]," Sellername ":" Händler 2 "," SellerID ":" 2 "}, {" Liste ": [{" BargainPrice ": 111.99," Createtime ":" 2017-10-03t23: 43: 53 "," DetailUrl ":" https://item.m.jd.com/product/4719303. utm_medium = appshare & utm_campaign = t_335139774 & utm_term = qqFriends "," Bilder ":" 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" "PSCID": 1, "ausgewählt": 0, "Sellerid": 5, "Subhead": "Jedes Festival in der Mitte des Autumns kann nicht einfach sein. Egal wo Sie sind, Sie brauchen immer einen Kuchen, um Ihr Leben vollständiger zu machen. Festival Mooncake Old Peking Mooncake Geschenkbox 655g "}]," Sellername ":" Merchant 5 "," SellerID ":" 5 "}, {" Liste ": [{" Bar GainPrice ": 11800," CreateTime ":" 2017-10-03T23: 53: 28 "," DetailUrl ":" https://mitem.jd.hk/ware/view.act Ion? Wareid = 1988853309 & Cachekey = 1ACB07A701ECE8D2434A6AE7FA6870A1 "," Images ":" 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.jpg!q70.jpg|https://m.360buyimg.com/n0 /jfs/t5815/178/261467118/51656/7f52d137/593276c7n107b725a.jpg!q70.jpg|https://m.360buyimg.com/n0/j fs/t5878/60/2557817477/30873/4502b606/593276caN5a7d6357.jpg!q70.jpg","num":1,"pid":62,"price":15999,"pscid":40,"selected":0,"sellerid":6,"subhead":"Purchase some computer Office-Produkte für 1 Yuan und Rückkehr zu Zugkarten für 5 Yuan (sobald die Rückkehr vorbei ist) "," Titel ":" Globaler Kauf von neuen Apple-Modellen MacBook Pro Apple Laptop Silver VP2 New 13-Zoll-Bar i5/8g/256g "}]," Sellername ":" Händler 6 "," SellerID ":" 6 "}, {" Liste ": [{" Bargainprice ": 399," CreateTime ":" 2017-10-03t23: 53: 28 "," DetailUrl ":" https UTM_SOURCE = AndroidApp & utm_Medium = AppShare & utm_campaign = t_335139774 & utm_term = qqFriends " , "Bilder": "https://m.360buyimg.com/n0/jfs/t5887/201/859509257/69994/6bde9bf6/59224c24n e854e14c.jpg! /59224c24n3324d5f4.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5641/233/853609022/5737 4/5c73d281/59224c24n3324d5f4.jpg! Q70.jpg "," Num ": 1," PID ": 86," Preis ": 777," PSCID ": 85," Ausgewählt ": 0," Sellerid ": 7" Subhead "," 2). Fünf Beutel mit gerader Hosen Waschen Sie enge Jeans 941825 Dunkelgrau 33/32 (175/84a) "}]," Sellername ":" Händler 7 "," SellerID ":" 7 "}, {" Liste ": [{" 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 = qqFriends "," Bilder ":" https: //m.36 0buyimg.com/n0/jfs/t9004/210/1160833155/647627/AD6BE059/59B4F4E1N9A2B153 2.jpg! 5957F53/598E95F1N7F2ADB87.JPG! Q70.JPG | https: //m.360buyimg.com/n0/jfs/t74 41/10/64242474/419246/ADB30A7D/598E95FBND989BA0A.JPG! Q70.JPG "," Num ": 12," p ID ": 1," Preis ": 118," PSCID ": 1," ausgewählt ": 0," SellerID ": 17," Subhead ":" Jedes Festival in der Mitte des Autumens kann nicht einfach sein, egal wo Sie sind, Sie brauchen immer einen Kuchen, um Ihr Leben vollständiger zu machen. Daoxiangcun Mid-Autumn Festival Mooncake Old Peking Mooncake Geschenkbox 655G "}]," Sellername ":" Merchant 17 "," Sellerid ":" 17 "}, {" Liste ": [{" Bargainprice ": 111,99, DAGETIONURLE:" DAGETRETURL. : //item.m.jd.com/product/4719303.html? utm_source = androidapp & utm_medium = appshare & utm_campaign = t_335139774 & utm_term = qqfriends "," Bilder ":" Https: // M. .360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59B4F4E1N9A2B 1532.jpg! /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, "Preis": 299, "PSCID": 1, "ausgewählt": 0, "SellerId": 18, "Unterhead": "Jedes Festival in der Mitte des Autumns kann nicht einfach sein. Egal, wo Sie sind, Sie brauchen immer ein Stück Kuchen, um Ihr Leben vollständiger zu machen, JD Mooncakes machen die Liebe, die sich besser befinden. Finger "," Titel ":" Peking Daoxiang Dorf Daoxiang Dorf Mid-Autumn Festival Mooncake Old Peking Mooncake Geschenkbox 655g "}]," Sellername ":" Kaufmann 18 "," SellerID ":" 18 "}, {" Liste ": [{" Bargainprice ": 11800," CreateTime ":" 2017-10-03t23: 53: 28 "," DetailUrl ":" https://item.jd.hk/ware /view.action?wareId=1988853309&cachekey=1ACB07A701ECE8D2434A6AE7FA6870A1","Images" 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," Preis ": 37999.99," PSCID ": 40," ausgewählt ": 0," Sellerid ": 20," Subhead ":" Kauf ein paar Computer -Office -Produkte für 1 Yuan und erhalten einen 5 -Yuan -Guthaben -Mac -Mac. VP2 Neues 13-Zoll-Bar I5/8G/256G "}]," Sellername ":" Händler 20 "," SellerID ":" 20 "}, {" Liste ": [{" Bargainprice ": 111.99," CreateTime ":" 2017-10-14t21: 39: 05 "," detailUrl ":" https p & utm_medium = appshare & utm_campaign = t_335139774 & utm_term = qqFriends "," Bilder ":" 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! E ": 88.99," PSCID ": 1," Ausgewählt ": 0," SellerID ": 21," Unterkopf ":" Jedes Festival in der Mitte des Autumens kann nicht einfach sein. Daoxiangcun Mid-Autumn Festival Mooncake Old Peking Mooncake Geschenkbox 655G "}]," Sellername ":" Merchant 21 "," Sellerid ":" 21 "}] */ privat String msg; privater Zeichenfolgecode; private list <Datenabische> Daten; 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; } publiclist <Datenabesan> getData () {returndaten; } public void setData (list <Datenabhängige> Daten) {this.data = data; } öffentliche statische Klassendatenbesitze { /*** Liste: [{"BargainPrice": 22.9, "CreateTime": "2017-10-14t21: 48: 08", "DetailUrl": "https://item.m.jd.com/product/2542855.html?utM_Source=androidapp&utm_med IUM = AppShare & utm_campaign = t_335139774 & utm_term = qqFriends "," Bilder ":" https://m.360buyimg.com/n0/jfs/t1930/284/2865629620/390243/E3ADE9C4/56F0a08 fnbd3a1235.jpg! 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,"Sectected":0,0,"Sersid Sonderangebot, Off -Off -Over -99 -Off -Over -Subhead -Off -Over -Subhead -Off -Subhead -Over -Subhead -Huire -Sonderangebot, 50 -Off -Subhead -Hit -Sup -Sonderangebot, 50 -Off -Subhese, Snack -Sonderangebote, 50 -Off -Off -Off -Over -The -Supel -Supers Sonder -Sonderangebote, 50 -Off -Snack, Snack -Sonderangebote, 50 -Off -Off -Off -Subhead -Supel -Sonderangebote. Es》 "," Titel ":" Drei Eichhörnchen-Nüsse geröstete Snacks cremige Pecan 225g/Bag "}, {" Bargainprice ": 11800," Createtime ":" 2017-10-10t17: 33: 37 "," Detailurl ":" Https:/item.m.jd.com/product tml? utm#_source = androidapp & utm#_medium = appshare & utm#_campaign = t#_335139774 & utm#_term = qqfriends "," Bilder ":" https://m.360buyimg.com 155/2098998076/156185/6cf95035/595dd5a5Nc3a7dab5.jpg!q70.jpg","num":2,"pid":57,"price":5199,"pscid":40,"selected":0,"sellerid":1,"subhead":"【i5 MX150 2G Videospeicher] Full HD Schmale Lünette 8G Speicher 256 SSD unterstützt Fingerabdruckerkennung vorinstalliertes Win10-System "," Titel ":" Xiaomi (MI) Air 13,3-Zoll Full Metal Thin Notebook (i5-7200U 8G 256G PCLE SSD MX150 2G Unabhängiges Grafik FINGERPING FINGERPING ENGEBNISSIGKEIT WIN10) Silver/R/N "}, {" BargainPrice ": 99," CreateTime ":" 2017-10-14t21: 38: 26 "," DetailUrl ":" https://item.m.jd.com/product/4345173.htmlautm#_Source=androidApp&utm#m#mium=app Share & UTM#_campaign = t#_335139774 & utm#_term = qqFriends "," Bilder ":" https: //m.360buyimg . //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," Preis ": 2999," PSCID ": 39" Selected ": 0," Sellerid ": 1," Subhead ":" HD Dual Camera, It Cleary 2000 + 16 Millionen Prociant, 6gm-Prozess, 6GB MEHRE, IS IS CLEAR 2000 + 16 Millionen, 63-mill-mill-mill-mill-mill-mill-mill-mill-mill-mill-mill-prozess-kamera Monster! private String sellerid; private Liste <ListBean> Liste; privater boolescher Scheck; public boolean iSheck () {Rückgabeprüfung; } public void setcheck (boolean check) {this.check = check; } public String getellername () {return Sellername; } public void setsellername (String Sellername) {this.sellername = Sellername; } public String getellerId () {return sellerId; } public void setsellerId (String sellerID) {this.sellerId = sellerId; } publiclist <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_Qufriends * Bilder * Bilder: 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 * Preis: 288.0 * pscid: 2 * ausgewählt: 0 * sellerid: 1 * Unterkopf: Drei Squirrel -Snacks Sonderangebot, 50 Rabatt für Einkäufe über 99 in der Gegend, 100 Rabatt für Kauf von 199 in der Gegend, beeilen Sie sich und kaufen Sie. private String createtime; private String detailurl; private Stringbilder; private int num; private int pid; privater Doppelpreis; privat int pscid; private int ausgewählt; private int sellerid; private String -Unterhead; privater String -Titel; private int cou = 1; public int getcou () {return cou; } public void setcou (int cou) {this.cou = cou; } private boolean Check; public boolean iSheck () {Rückgabeprüfung; } public void setcheck (boolean check) {this.check = check; } public double getbargainprice () {return bargainprice; } public void setbargainprice (doppelte Bargainprice) {this.BargainPrice = bargainprice; } public String getCreateTime () {return createTime; } public void setCreateTime (String createTime) {this.createTime = CreateTime; } public String getDetailurl () {retailUrl; } public void setDetailurl (String detailUrl) {this.detailurl = detailUrl; } public String getImages () {return Images; } public void setImages (String -Bilder) {this.images = Bilder; } 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 () {Rückgabepreis; } public void setPrice (Doppelpreis) {this.price = price; } public int getpscid () {return pScid; } public void setpscid (int pScid) {this.pScid = pScid; } public int getSelected () {return ausgewählt; } public void setSelected (int ausgewählt) {this.selected = ausgewählt; } public int getellerId () {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
öffentliche Klasse MyApp erweitert die Anwendung {@Override public void onCreate () {Super.oncreate (); Fresco.initialize (this); }} Schicht anzeigen
Schreiben Sie zuerst zwei Schnittstellen
public interface icart {void showlist (Liste <cartbean.databean> Groupist, Liste <Liste <cartbean.databean.Listbean >> Childlist);} public interface iview <t> {void showbean (t t); void Showstr (String S);}Hauptseite Layout
<? xmlns: tools = "http://schemas.android.com/tools" android: layout_width = "match_parent" android: layout_height = "match_parent" android: orientation = "vertikale" tools: context = "com.bwie.zangzhen201701701. Android: id = "@+id /elv" Android: layout_weight = "1" Android: layout_width = "Wrap_Content" Android: layout_Height = "Wrap_Content" /> <linearlayout android: layout_widht = "9" Android: Orientierung = "Horizontal" Android: Layout_width = " Android: layout_Height = "match_parent"> <Checkbox Android: id = "@+id /quanxuan" Android: layout_width = "Wrap_content" Android: layout_Height = "Wrack_Content" /> <textView android: text = "select All" Android: Layout_width = " 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 = "Gesamtpreis: 0.0" /> <textView Android: text = "Gesamt 0 Elemente" Android: id = "@+id /tv_count" android: </LinearLayout> <TextView android:text="total checkout" android:background="#FFD82020" android:layout_marginLeft="100dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout></LinearLayout>
Hauptseite
MainActivity der öffentlichen Klasse erweitert die AppCompataktivität implementiert ICART {private ExpanceableListView Melv; privates Kontrollkästchen mquanxuan; private Textview Mzongjia; private TextView MTVCount; private myexpandableadapter myexpandableadapter; @Override Protected void OnCreate (Bündel 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) {myexpandableLeadapter.qx (mquanxuan.Ischecked ());}}); } private void initView () {melv = (exptableListView) findViewById (r.id.elv); mquanxuan = (Kontrollkästchen) findViewById (R.Id.quanxuan); mzongjia = (textView) findViewById (R.Id.Zongjia); mtvCount = (textView) findViewById (r.id.tv_count); } @Override public void showlist (Liste <cartbean.databean> Groupist, Liste <list <cartbean.databean.listbean >> Childlist) {myexpandableLeadapter = new myexpandableLeadapter (Groubier, diese, Childlist); melv.setAdapter (myexpandableadapter); für (int i = 0; i <Groupist.size (); i ++) {melv.expandgroup (i); }} // den Wert erhalten @Subscribe public void onPriCeandCount (countandPrice cp) {mzongjia.setText ("Total"+cp.getCount ()+"item"); mtvCount.setText ("Gesamt:"+cp.getPrice ()); } // den Wert erhalten @Subscribe public void onPriceAnDCount1 (MessgeeVent -Ereignis) {// Ändern Sie den ausgewählten Zustand mquanxuan.schecked (Event.ISCheck ()); } @Override protected void onDestroy () {Super.onDestroy (); EventBus.getDefault (). Unregister (this); }}Das zweite Seite Layout
<?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: Orientierung = "Vertikal" Android: id = "@+id/acity_add" Tools: context = "com.bwie.zhangzhen20170108.Addactivity"> <com.facebook.view.view.ssimpledtreeeeveeview "300.SimpledRaweeeVeee: Android: id = "@+id /xqsdv1" Android: layout_gravity = "center" Android: layout_Height = "300dp" /> <textView Android: id = "@+id /tvtitle1" Android: layout_width = "matchnent" android: layout: layout_high = "Wrack_Content" /> ^ " /> ^ />" /> " />" /> " />" /> " />" /> " />" /> " />" /> " />" /> " /" /> Android: Orientation = "Horizontal" Android: layout_width = "match_parent" Android: layout_Height = "Wrap_Content"> <button Android: id = "@+id/tiaozhuan1" Android: Layout_WIGHT = "1" Android: Text = "Jump to Cart" Android: Layout "und Layout" und Layout "und Layout" und Layout "und CARD: Android: layout_Height = "Wrap_Content"/> <button Android: id = "@+id/tianjia1" Android: layout_weight = "1" Android: text = "Hinzufügen zu cart" android: layout_width = "match_parent" und Layout_Hight = "Wrap_Content"/linearlayout> </> </linearlayout> </> </linearlayout> </> </linearlayout> </> </linearlayout>
Implementierung des Einkaufswagencode
Public Class AddActivity erweitert AppCompataktivität implementiert View.onclickListener, iview {private SimpledRaweeview mxqsdv; private textView mtvtitle; privater Knopf Mtiaozhuan; privater Knopf Mtianjia; private linearlayout maddaktivität; private XQPresenter XQPresenter; @Override Protected void OnCreate (Bündel 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 (Ansicht v) {Switch (v.getId ()) {Standard: break; // In MainActivity (Einkaufswagen) Fall R.Id.Tiaozhuan1: Startaktivität (neue Absicht (diese, MainActivity.Class)); brechen; Fall R.Id.Tianjia1: xqpresenter.getAdd (); brechen; }} @Override public void showbean (objekt o) {xqbean xqbean = (xqbean) o; Xqbean.databean data = xqbean.getData (); String s = data.getImages (). Split ("// |") [0]; URI URI = URI.PARSE (s); // Adresse konvertiert in 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 -Paket
Legen Sie eine Klasse von Menge und Preis fest
öffentliche Klasse countandPrice {private int count; Privatpreis; public int getCount () {return count; } public void setCount (int count) {this.count = count; } public int getPrice () {Rückgabepreis; } public void setPrice (int preis) {this.price = price; }}Eventbus
öffentliche Klasse MessgeEvent {private boolean Check; public boolean iSheck () {Rückgabeprüfung; } public void setcheck (boolean check) {this.check = check; }} Modell
Implementieren Sie die Schnittstelle der Modellebene der Detailseite
public interface ixqmodel {public void getXq (int pid, String str, endgültiger OnNetliSenter <xqbean> cgsb);}Implementieren Sie das Seitenseitenmodell
public class xqmodel implementiert ixqmodel {@Override public void getXq (int pid, String st. Flowable.observeon (Androidschedulers.mainThread ()) .Subscribeon (planulers.io ()) .Subscribe (neuer Verbraucher <xqbean> () {@Override public void void Accept (xqbean xqbean) Ausnahme {OnNetLiSenter.Success (xqbean);}}}}); } public void getAdd (int uid, int pid, String str, endgültig OnNetliSenter <DadCart> OnNetliSenter) {Flowable <dodgeCart> Flowable = retrofithepler.getServiceapi (). getmsg (uid, pid, st. str); Flowsable.Observeon (Androidschedulers.mainThread ()) .Subscribeon (plantulers.io (). }}Einkaufswagenmodell
public class cartmodel {public void getCart (int uid, String str, endgültig auf netliseenter <cartbean> ornetliSenter) {flowable <cartbean> flowable = retrofithepler.getServiceapi (). getCart (uid, str); Flowable.observeon (Androidschedulers.mainThread ()) .Subscribeon (plantulers.io ()) .Subscribe (neuer Verbraucher <cartbean> () {@Override public void void Accept (cartbean cartbean) wirft eine Ausnahme aus {OnNetLiseenter.Success (cartbean);}}}}}}}; }} Moderatorschicht
P-Schicht der Detailseite
public class xqpresenter {private endgültige 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 Erfolg (xqbean xqbean) {iview.showbean (xqbean);}}); } public void getAdd () {xqmodel.getAdd (3043, 12, "Android", New OnNetliSenter <Ddcart> () {@Override public void Erfolg (addCart addCart) {iview.showSt (addcart.getMsg ()); }}P-Level des Einkaufswagens
öffentliche Klasse CartPresenter {private icart icart; Privates Final Cartmodel Cartmodel; public cartpresenter (icart icart) {this.icart = icart; cartmodel = neuer cartmodel (); } public void getCart () {cartmodel.getCart (3043, "Android", New OnNetliSenter <cartbean> () {@Override public void Succials (cartbean cartbean) {list <cartbean.databean> groupist = cartbean.hiltdata (). ArrayList <> (); }}Adapter
public class myexpandableadapter erweitert BaseexpandablelistAdapter {private Liste <cartbean.databean> GroupData; privater Kontextkontext; Private Liste <Liste <cartbean.databean.Listbean >> Childlist; public myexpandableadapter (Liste <cartbean.databean> GroupData, Kontextkontext, Liste <Liste <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 öffentliches Objekt getGroup (int Groupposition) {return GroupData.get (Groupposition); } @Override public Object getChild (int Groupposition, int Kinderposition) {return null; } @Override public Long GetGroupId (int Groupposition) {return croupposition; } @Override public Long GetChildid (int Groupposition, int kindPosition) {Return Childlust Position; } @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>
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.