บทความนี้แบ่งปันรหัสเฉพาะของ RXJAVA ติดตั้งติดตั้งตะกร้าสินค้าสำหรับการอ้างอิงของทุกคน เนื้อหาเฉพาะมีดังนี้
ภาพการทำซ้ำ:
1. การพึ่งพาอาศัยกัน
AnnotationProcessor 'com.jakewharton: Butterknife-Compiler: 8.8.1' Compile 'com.jakewharton: Butterknife: 8.8.1' Compile 'com.android.support:Recyclerview-V7:26.0.0-Alpha1 'com.squareup.retrofit2: Converter-Gson: 2.3.0' Compile 'com.facebook.fresco: Fresco: 0.12.0' Compile 'Com.facebook.fresco: แอนิเมชั่น-เบส-012.0 'com.facebook.fresco: แอนิเมชั่น-เรา-เรา: 0.12.0' คอมไพล์ 'com.facebook.fresco: webpsupport: 0.12.0' คอมไพล์ 'io.reactivex.rxjava2: rxjava: 2.1.7' com.squareup.retrofit2 'io.reactivex.rxjava2: rxandroid: 2.0.1' com.squareup.okhttp3: okhttp: 3.9.0 'Compile' com.google.code.gson: GSON: 2.8.1 '
2. เค้าโครง
1. การเพิ่มเติมเค้าโครงเค้าโครง _add_delete
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <linearlayout xmlns: Android = "http://schemas.android.com/apk/res/android" Android: layout_width = "Match_parent" Android Android: weightsum = "1"> <textView Android: id = "@+id/txt_delete" Android: layout_width = "30dp" Android: layout_height = "30dp" Android: text = "การหัก" Android: Gravity = "Center" Android: id = "@+id/et_number" Android: layout_margintop = "2dp" Android: layout_width = "50dp" Android: layout_height = "30dp" Android: background = "drawable/edit" <TextView Android: id = "@+id/txt_add" Android: layout_width = "30dp" Android: layout_height = "30dp" Android: text = "plus" Android: Gravity = "Center" Android: background = "#8B948B"/>
2. รายละเอียดผลิตภัณฑ์เค้าโครงกิจกรรม _Main
<? xml version = "1.0" encoding = "utf-8"?> <relativelayout xmlns: Android = "http://schemas.android.com/apk/res/android" xmlns: fresco = "http:/ Android: layout_width = "match_parent" Android: layout_height = "match_parent"> <linearlayout Android: layout_width = "match_parent" Android: layout_height = "match_parent" Android: Orientation = "Vertical" Android: id = "@+id/my_image_view" Android: layout_width = "match_parent" Android: layout_height = "450dp" fresco: placeholderimage = "@mipmap/ic_launcher"/> Android: layout_width = "wrap_content" Android: layout_height = "wrap_content" Android: layout_margin = "10dp" Android: text = "Aahhh มันเป็นของคุณ" Android: textsize = "20dp" /> Android: layout_width = "wrap_content" Android: layout_height = "wrap_content" Android: layout_margin = "10dp" Android: text = "¥ 18132" Android: textColor = "#DC5F2E" Android: layout_width = "wrap_content" Android: layout_height = "wrap_content" Android: layout_margin = "10dp" Android: text = "ฉันเป็น Merchant19" Android: textsize = "16dp" />> Android: layout_width = "match_parent" Android: layout_height = "50dp" Android: การวางแนว = "แนวนอน"> <ปุ่ม Android: id = "@+id/btn_addcart" Android: layout_weight = "1" Android Android: background = "#ffc207" Android: text = "เพิ่มลงในตะกร้าสินค้า"/> <ปุ่ม Android: id = "@+id/btn_shopping" Android: layout_weight = "1" Android: layout_width = "0dp" Android ตอนนี้ "/> </linearlayout> </elativelayout>
3. การจัดวางตะกร้าสินค้า activity_main2
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <linearlayout xmlns: Android = "http://schemas.android.com/apk/res/android" Android: Layout_width = "Match_parent" Android <!-เลย์เอาต์หัว-> <linearLayout Android: id = "@+id/top_bar" Android: layout_width = "match_parent" Android: layout_height = "48dp" Android: background = "#f7f7f7 Android: layout_height = "48dp" Android: background = "@Android: color/transparent" Android: Orientation = "Vertical"> <ImageView Android: id = "@+id/back" Android: layout_width = "48dp" Android Android: layout_gravity = "center_vertical" Android: padding = "12dp" Android: src = "@drawable /back" /> <textView Android: layout_width = "Match_parent" Android: Layout_height = "WRAP_CONTENT Android: text = "ตะกร้าสินค้า" Android: textColor = "#1A1A1A" Android: textSize = "16SP" /> <textView Android: id = "@+id /แก้ไข" Android: layout_width = "WRAP_CONTENT Android: layout_marginright = "40dp" Android: Gravity = "Center" Android: minHeight = "48DP" Android: text = "แก้ไข" Android: textColor = "#1A1A1A" Android: textSize = "14Sp" Android <ExpandableListView Android: id = "@+id/exlistView" Android: layout_width = "match_parent" Android: layout_height = "0dp" Android: layout_weight = "1" Android: เด็ก Android: layout_width = "match_parent" Android: layout_height = "50dp" Android: Gravity = "center_vertical" Anderid: การวางแนว = "แนวนอน"> <ช่องทำเครื่องหมาย Android: id = "@+id/all_chekbox Android: layout_height = "wrap_content"/> <textView Android: layout_width = "wrap_content" Android: layout_height = "wrap_content" Android: text = "เลือกทั้งหมด"/> Android: layout_height = "wrap_content" Android: layout_weight = "4"> <linearlayout Android: layout_width = "match_parent" Android: layout_height = "wrap_content" Android: Orientation = "Android" Android "Android > <linearLayout Android: layout_width = "match_parent" Android: layout_height = "wrap_content" Android: การวางแนว = "แนวนอน" Android: Gravity = "Right"> <TextView Android: layout_width = "Wrap_Content" Android Android: layout_marginleft = "5DP" Android: text = "total:" Android: textSize = "18SP" Android: textStyle = "bold" /> <textView Android: id = "@+id /total_price Android: text = "¥ 0.00" Android: textColor = "#f23232" Android: textSize = "16SP" Android: textStyle = "ตัวหนา"/> </linearLayout> <TextView Android: id = "@+id/total_number" Android: layout_height = "WRAP_CONTENT" Android: text = "ผลิตภัณฑ์ทั้งหมด: 0 ชิ้น" Android: Gravity = "Right" Android: textsize = "16SP" Android: textStyle = "bold"/> </linearLayout> Android: layout_height = "match_parent" Android: layout_weight = "3" Android: background = "#fd7a05" Android: clickable = "true" Android: Gravity = "Center" Android: text = "Clear" Android: textColor = "#fafafa Android: layout_width = "match_parent" Android: layout_height = "match_parent" Android: layout_weight = "3" Android: background = "#e2231c" Android: clickable = "True" Android: Gravity = "Center" Android /> </linearLayout> </LinearLayout> </LineArLayout>
4. รายการรองระดับกลุ่ม ex_group_item
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <linearlayout xmlns: Android = "http://schemas.android.com/apk/res/android" Android: Layout_width = "Match_parent" Android Android: Orientation = "แนวนอน"> <ช่องทำเครื่องหมาย Android: id = "@+id/group_checkbox" Android: layout_marginleft = "20dp" Android: layout_width = "wrap_content" Android: layout_height = Android: id = "@+id/shop_name" Android: layout_marginleft = "20dp" Android: layout_width = "wrap_content" Android: layout_height = "wrap_content" Android: textsize = "16DP"/>
5. รายการรองย่อย ex_child_item
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <linearlayout xmlns: Android = "http://schemas.android.com/apk/res/android" xmlns: app = "http://schemas.android.com xmlns: fresco = "http://schemas.android.com/apk/res-auto" Android: layout_width = "match_parent" Android: layout_height = "230dp" Android: Orientation = "แนวนอน" Android: layout_margintop = "50dp" Android: layout_marginleft = "20dp" Android: layout_marginbottom = "50dp" Android: layout_width = "rap_content" Android: layout_height = "wrap_content Android: layout_marginleft = "20dp" Android: layout_width = "match_parent" Android: layout_height = "Match_parent"> <TextView Android: id = "@+id/shop_title" Android: layout_width = "Wrap_Cont Android: layout_alignparentleft = "true" Android: layout_alignparentstart = "true" Android: layout_marginleft = "17dp" Android: layout_marginstart = "17dp" Android: text = "textView" Android Android: id = "@+id/shop_img" Android: layout_width = "90dp" Android: layout_height = "90dp" Android: layout_margintop = "30dp" แอป: srccompat = "@mipmap/ic_launcher Android: layout_alignparentleft = "true" Android: layout_alignparentstart = "true" />-> <com.facebook.drawee.view.simpledRaweeView Android: id = "@+id /shop_img" Android: layout_width = "90DP" Android Android: layout_margintop = "30dp" Fresco: placeholderimage = "@mipmap/ic_launcher" Android: layout_below = "@+id/shop_name" Android: layout_alignparentleft = "True" Android Android: id = "@+id/shop_price" Android: layout_width = "wrap_content" Android: layout_height = "wrap_content" Android: layout_aligntop = "@+id/shop_img" Android Android: text = "¥ 20" Android: textcolor = "#f23232"/> <com.bwei.gepeng.myview.adddeleteview Android: id = "@+id/adv" Android: layout_width = "160dp" Android " Android: layout_below = "@+id/shop_price" Android: layout_margintop = "30dp" Android: layout_marginleft = "140dp" แอป: left_text = "-" right_text = "+" แอป: middle_text = "1" </com.bwei.gepeng.myview.adddeleteView> <ปุ่ม Android: id = "@+id/shop_delete" Android: layout_width = "wrap_content" Android: layout_height = "wrap_content" Android: layout_align Android: layout_centervertical = "true" Android: Visibility = "Invisible" Android: text = "DELETE"/> </relativElayout> </LineArLayout>
3. คลาสเอนทิตี
1. MessageBean
แพ็คเกจ com.bwei.gepeng.entity; MessageBean คลาสสาธารณะ <T> {รหัสสตริงส่วนตัว; ข้อมูลส่วนตัว ผงชูรสส่วนตัว ผู้ขายส่วนตัว สตริงสาธารณะ getCode () {รหัสส่งคืน; } โมฆะสาธารณะ setCode (รหัสสตริง) {this.code = code; } สาธารณะ t getData () {ส่งคืนข้อมูล; } โมฆะสาธารณะ setData (ข้อมูล t) {this.data = ข้อมูล; } สตริงสาธารณะ getMSG () {return msg; } โมฆะสาธารณะ setMSG (สตริงผงชูรส) {this.msg = msg; } Public SellerBean GetSeller () {ผู้ขายส่งคืน; } โมฆะสาธารณะ setSeller (ผู้ขายผู้ขาย) {this.seller = ผู้ขาย; } ระดับสาธารณะระดับสแตติก SellerBean {/** * คำอธิบาย: ฉันเป็นพ่อค้า 19 * ไอคอน: http://120.27.23.105/images/icon.png * ชื่อ: ผู้ค้า 19 * ผลิตภัณฑ์: 999 * คะแนน: 5.0 * ผู้ขาย: 19 */คำอธิบายสตริงส่วนตัว; ไอคอนสตริงส่วนตัว ชื่อสตริงส่วนตัว; 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; -2. Goodsshowbean
แพ็คเกจ com.bwei.gepeng.entity; ชั้นเรียนสาธารณะ Goodsshowbean {การต่อรองราคาสองครั้งส่วนตัว; สตริงส่วนตัว 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; } @Override สตริงสาธารณะ toString () {return "goodsshowbean {" + "bargainprice =" + bargainprice + ", createTime = '" + createTime +'/'' + ", detailUrl = '" detailuRl +'/' + " price = " + price +", pscid = " + pscid +", salesenum = " + salesenum +", sellerId = " + sellerId +", subhead = '" + subhead +'/'' +", title = '"title +'/'' + '}'; -3. Cartbean
แพ็คเกจ com.bwei.gepeng.entity; นำเข้า java.util.list; คลาสสาธารณะ cartbean {สตริงส่วนตัว sellerName; ผู้ขายสตริงส่วนตัว; รายการส่วนตัว <listbean> รายการ; สตริงสาธารณะ 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 {ส่วนตัวต่อรองราคาส่วนตัว; สตริงส่วนตัว createTime; รายละเอียดสตริงส่วนตัว; ภาพสตริงส่วนตัว INT NUM ส่วนตัว; Private Int PID; ราคาสองเท่าส่วนตัว pscid 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 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 getSelerId () {return sellerId; } โมฆะสาธารณะ setSellerId (int sellerId) {this.sellerId = sellerId; } สตริงสาธารณะ getSubhead () {return subhead; } โมฆะสาธารณะ SetSubhead (Subhead String) {this.subhead = subhead; } สตริงสาธารณะ getTitle () {return title; } โมฆะสาธารณะ settitle (ชื่อสตริง) {this.title = title; }} @Override Public String ToString () {return "CartBean {" + "sellerName = '" + sellerName +'/'' + ", sellerId = '" + sellerId +'/'' + ", list =" + รายการ + '}'; -4. Groupbean
แพ็คเกจ com.bwei.gepeng.entity; Public Class Groupbean {String Private String sellerName; บูลีนส่วนตัว groupucb; Public GroupBean (String SellerName, Boolean Groupucb) {this.sellerName = sellerName; this.gropucb = Groupucb; } สตริงสาธารณะ getSellerName () {return sellerName; } โมฆะสาธารณะ setSellerName (String sellerName) {this.sellerName = sellerName; } บูลีนสาธารณะ isgropucb () {return groupucb; } โมฆะสาธารณะ setGropucb (boolean groupucb) {this.gropucb = groupucb; } @Override สตริงสาธารณะ toString () {return "GroupBean {" + "sellerName = '" + sellerName +'/'' + ", groupucb =" + groupucb + '}'; -5. Childbean
แพ็คเกจ com.bwei.gepeng.entity; ชั้นเรียนสาธารณะ Childbean {ชื่อสตริงส่วนตัว; ภาพสตริงส่วนตัว ราคาสองเท่าส่วนตัว INT NUM ส่วนตัว; Boolean Private Boolean ChildCB; บูลีนส่วนตัว BTN; Private Int PID; Public Childbean (ชื่อสตริง, ภาพสตริง, ราคาสองเท่า, int num, boolean childcb, บูลีน btn, int pid) {this.title = title; this.images = images; this.price = ราคา; this.num = num; this.childcb = childcb; this.btn = btn; this.pid = pid; } public int getPid () {return pid; } โมฆะสาธารณะ setPID (int pid) {this.pid = pid; } บูลีนสาธารณะ isbtn () {return btn; } โมฆะสาธารณะ setbtn (บูลีน btn) {this.btn = btn; } สตริงสาธารณะ getTitle () {return title; } โมฆะสาธารณะ settitle (ชื่อสตริง) {this.title = title; } public String getImages () {return images; } โมฆะสาธารณะ setImages (ภาพสตริง) {this.images = images; } สาธารณะ double getPrice () {ราคาคืน; } โมฆะสาธารณะ setPrice (ราคาสองเท่า) {this.price = ราคา; } public int getNum () {return num; } โมฆะสาธารณะ setNum (int num) {this.num = num; } บูลีนสาธารณะ ischildcb () {return childcb; } โมฆะสาธารณะ setChildCB (บูลีน childCB) {this.childCb = childCB; } @Override สตริงสาธารณะ toString () {return "childBean {" + "title = '" title +'/'' + ", images = '" + ภาพ +'/'' + ", price =" + price + ", num =" + num + " -4. อินเทอร์เฟซ
1. การรับใช้
แพ็คเกจ com.bwei.gepeng.http; นำเข้า com.bwei.gepeng.entity.cartbean; นำเข้า com.bwei.gepeng.entity.goodsshowbean; นำเข้า com.bwei.gepeng.entity.messagean; นำเข้า java.util.list; นำเข้า java.util.map; นำเข้า io.reactivex.flowable; นำเข้า Retrieve2.http.get; นำเข้า Retrieve2.http.QueryMap; อินเทอร์เฟซสาธารณะ apiservice {// รายละเอียดผลิตภัณฑ์สอบถาม 75 //http://120.27.23.105/product/getProductDetail?pid=75&source=android @get ("Product/GetProductDetail") // การสืบค้นช้อปปิ้งตะกร้า // http: //120.27.23.105/product/getcarts? uid = 3802 & source = Android @get ("Product/GetCarts") Flowable <MessageBean <รายการ <cartbean>> getCart (@QueryMap Map // ลบตะกร้าสินค้า // http: //120.27.23.105/product/getcarts? uid = 3802 & source = Android @get ("Product/Deletecart") Flowable <MessageBean <รายการ <cartbean>> getdel // เพิ่มตะกร้าสินค้า // http: //120.27.23.105/product/addcart? uid = 3802 & pid = 75 & source = Android @get ("Product/AddCart") Flowable <MessageBean <รายการ <cartbean>> } 2.Iview [java] ดูอินเตอร์เฟส plain copybublic iview {void onsuccess (Object O, String tag); เป็นโมฆะ onfailed (Exception E, String Tag); } 3.IPRESENTER [JAVA] ดู CopyImport Java.util.map ธรรมดา; อินเทอร์เฟซสาธารณะ ipresenter {void getData (แผนที่ <สตริง, สตริง> แผนที่, แท็กสตริง); } 4.imodel [java] ดู plain copyimport java.util.map; อินเทอร์เฟซสาธารณะ imodel {void getData (แผนที่ <สตริง, สตริง> แผนที่, แท็กสตริง); -5. รหัส
1. มุมมองที่กำหนดเอง addDeleteView
แพ็คเกจ com.bwei.gepeng.myview; นำเข้า Android.content.context; นำเข้า Android.content.res.typedarray; นำเข้า Android.graphics.Color; นำเข้า Android.util.attributeset; นำเข้า Android.View.View; นำเข้า Android.widget.editText; นำเข้า Android.widget.linearlayout; นำเข้า Android.widget.TextView; นำเข้า com.bwei.gepeng.r; คลาสสาธารณะ AddDeleteView ขยาย LinearLayout {Private OnadddelClickListener Listener; EditText ส่วนตัว Etnumber; // ระบุอินเทอร์เฟซการโทรกลับสำหรับการใช้งานภายนอกอินเตอร์เฟสสาธารณะ onadddelclicklistener {void onaddclick (ดู V); เป็นโมฆะ ondelclick (ดู V); } โมฆะสาธารณะ setonadddelclicklistener (onadddelclicklistener ผู้ฟัง) {ถ้า (ผู้ฟัง! = null) {this.listener = ผู้ฟัง; }} สาธารณะ addDeleteView (บริบทบริบท) {นี้ (บริบท, null); } สาธารณะ addDeleteView (บริบทบริบท, attributeset attrs) {นี้ (บริบท, attrs, 0); } สาธารณะ addDeleteView (บริบทบริบท, attributeset attrs, int defstyleattr) {super (บริบท, attrs, defstyleattr); initView (บริบท, attrs, defstyleattr); } private void initview (บริบทบริบท, attributeset attrs, int defstyleattr) {view.inflate (บริบท, r.layout.layout_add_delete, สิ่งนี้); // รับ control textView txtDelete = findViewById (r.id.txt_delete); textView txtadd = findViewById (r.id.txt_add); etnumber = findViewById (r.id.et_number); typedArray typedArray = context.obtainstyledattributes (attrs, r.styleable.adddeleteviewstyle); string leftText = typedArray.getString (r.styleable.adddeleteViewStyle_left_text); string rightText = typedArray.getString (r.styleable.adddeleteViewStyle_right_text); String middletext = typedArray.getString (r.styleable.adddeleteViewStyle_middle_text); int color = typedArray.getColor (r.styleable.adddeleteviewstyle_left_text_color, color.red); txtdelete.settext (lefttext); txtadd.settext (RightText); etnumber.settext (middletext); txtdelete.settextcolor (สี); // รีไซเคิล typedArray.recycle (); txtdelete.setonclicklistener (ใหม่ onclicklistener () {@Override โมฆะสาธารณะ onClick (ดูดู) {listener.ondelClick (ดู);}}); txtadd.setonclicklistener (ใหม่ onclicklistener () {@Override โมฆะสาธารณะ onClick (ดูดู) {listener.onaddClick (ดู);}}); } // ระบุวิธีภายนอกเพื่อแก้ไขตัวเลขโมฆะสาธารณะ setNumber (หมายเลข int) {ถ้า (หมายเลข> 0) {etnumber.settext (หมายเลข+""); }} // ให้วิธีการภายนอกเพื่อให้ได้หมายเลขปัจจุบัน int int ปัจจุบัน getNumber () {string string = etnumber.getText (). toString (); int i = integer.parseint (สตริง); กลับฉัน; - 2. เครื่องมือติดตั้งเพิ่มเติมคลาส Retrofitutils
แพ็คเกจ com.bwei.gepeng.http; นำเข้า java.io.ioException; นำเข้า okhttp3.httpurl; นำเข้า okhttp3.interceptor; นำเข้า okhttp3.okhttpclient; นำเข้า okhttp3.request; นำเข้า okhttp3.response; นำเข้า Retrieve2.retrofit; นำเข้า Retrieve2.adapter.rxjava2.rxjava2calladapterfactory; นำเข้า Retrieve2.converter.gson.gsonConverterterfactory; Public Class Retrofitutils {อินสแตนซ์ retrofitutils ผันผวนแบบคงที่ส่วนตัว; ติดตั้งเพิ่มเติมติดตั้งเพิ่มเติมส่วนตัว; retrofitutils ส่วนตัว () {okhttpClient client = ใหม่ okhttpClient.builder (). addInterceptor (ใหม่ logger ()). build (); retrofit = ใหม่ retrofit.builder (). ไคลเอ็นต์ (ไคลเอนต์) .addcalladapterfactory (rxjava2calladapterfactory.create ()) .addconverterterfactory (gsonconverterfactory.create ()) .baseurl ("http://120.27.23. } public Static retrofitutils getInstance () {ถ้า (อินสแตนซ์ == null) {ซิงโครไนซ์ (retrofitutils.class) {ถ้า (อินสแตนซ์ == null) {อินสแตนซ์ = ใหม่ retrofitutils (); }}} ส่งคืนอินสแตนซ์; } สาธารณะ apiservice getApiservice () {apiservice apiservice = retrofit.create (apiservice.class); return apiservice; } คลาส Logger ใช้ interceptor {@Override การตอบสนองสาธารณะ (ห่วงโซ่โซ่) พ่น IOException {ขอต้นฉบับ = chain.request (); httpurl url = original.url (). newBuilder () .AddQueryParameter ("แหล่งที่มา", "Android") .build (); // เพิ่มคำขอส่วนหัวคำขอ = Original.newBuilder () .url (url) .build (); return chain.proceed (คำขอ); - 3.M เลเยอร์
แพ็คเกจ com.bwei.gepeng.model; นำเข้า com.bwei.gepeng.entity.cartbean; นำเข้า com.bwei.gepeng.entity.goodsshowbean; นำเข้า com.bwei.gepeng.entity.messagean; นำเข้า com.bwei.gepeng.http.retrofitutils; นำเข้า com.bwei.gepeng.presenter.newspresenter; นำเข้า java.util.list; นำเข้า java.util.map; นำเข้า io.reactivex.flowable; โมเดลระดับสาธารณะใช้ Imodel {Private Newspresenter Presenter; โมเดลสาธารณะ (ผู้นำเสนอ Newspresenter) {this.presenter = ผู้นำเสนอ; } @Override โมฆะสาธารณะ getData (แผนที่ <สตริง, สตริง> แผนที่, แท็กสตริง) {ถ้า (tag.equals ("cart")) {flowable <messageBean <รายการ <cartBean>> flowable = retrofitutils.getInstance () getApiservice (). getCart (แผนที่); presenter.get2 (flowable, tag); } อื่นถ้า (tag.equals ("สินค้า")) {flowable <messagebean <goodsshowbean>> flowable = retrofitutils.getInstance (). getApiservice (). getNews (แผนที่); presenter.get (flowable, tag); } อื่นถ้า (tag.equals ("del")) {flowable <messagebean <list <cartbean>> flowable = retrofitutils.getInstance (). getApiservice (). getdel (แผนที่); presenter.get3 (Flowable, Tag); } อื่นถ้า (tag.equals ("เพิ่ม")) {flowable <messagebean <list <cartbean>> flowable = retrofitutils.getInstance (). getApiservice (). getAdd (แผนที่); presenter.get4 (Flowable, Tag); - 4.P เลเยอร์
แพ็คเกจ com.bwei.gepeng.presenter; นำเข้า com.bwei.gepeng.entity.cartbean; นำเข้า com.bwei.gepeng.entity.goodsshowbean; นำเข้า com.bwei.gepeng.entity.messagean; นำเข้า com.bwei.gepeng.model.model; นำเข้า com.bwei.gepeng.view.iview; นำเข้า java.util.list; นำเข้า java.util.map; นำเข้า io.reactivex.flowable; นำเข้า io.reactivex.android.schedulers.androidschedulers; นำเข้า io.reactivex.schedulers.schedulers; นำเข้า io.reactivex.subscribers.disposablesubscriber; Public Class Newspresenter ใช้ ipresenter {ส่วนตัว iview iview; Private Disposablesubscriber <MessageBean <GoodsShowBean>> สมาชิก; Private Disposablesubscriber <MessageBean <List <Cartbean>> SUBSCriber2; Private DisposablesUbsCriber <MessageBean <List <CartBean>> SUBSCriber3; Private DisposablesUbsCriber <MessageBean <List <CartBean>> Subscriber4; โมฆะสาธารณะ attainview (iview iview) {this.iview = iview; } @Override โมฆะสาธารณะ getData (แผนที่ <สตริง, สตริง> แผนที่, แท็กสตริง) {รุ่นโมเดล = รุ่นใหม่ (นี่); model.getData (แผนที่, แท็ก); } โมฆะสาธารณะ detachView () {ถ้า (iview! = null) {iview = null; } if (สมาชิก! = null) {if (! subscriber.isdisposed ()) {subscriber.dispose (); }} if (subscriber2! = null) {if (! subscriber2.isdisposed ()) {subscriber2.dispose (); }} if (subscriber3! = null) {if (! subscriber3.isdisposed ()) {subscriber3.dispose (); }} if (subscriber4! = null) {if (! subscriber4.isdisposed ()) {subscriber4.dispose (); }}} // การสืบค้นช้อปปิ้งตะกร้าสาธารณะเป็นโมฆะรับ (flowable <messagebean <goodsshowbean >> flowable, แท็กสตริงสุดท้าย) {subscriber = flowable.subscribeon (schedulers.io ()) .Observeon @Override โมฆะสาธารณะ onnext (MessageBean <HotesShowBean> ListMessageBean) {ถ้า (ListMessageBean! = null) {goodsshowbean data = listmessagebean.getData (); } @Override โมฆะสาธารณะ oncomplete () {}}); } // รายละเอียดผลิตภัณฑ์แบบสอบถาม 75 โมฆะสาธารณะ get2 (flowable <messagebean <list <cartbean >>> แท็กสตริงสุดท้ายที่ไหลได้) {subscriber2 = flowable.subscribeon (schedulers.io ()) .Observeon (AndroidSchedulers.mainThread () @Override โมฆะสาธารณะ onnext (MessageBean <list <cartbean>> list) {ถ้า (รายการ! = null) {รายการ <cartbean> data = list.getData (); } @Override โมฆะสาธารณะ oncomplete () {}}); } // ลบตะกร้าสินค้าช็อปปิ้งโมฆะสาธารณะ get3 (flowable <messagebean <list <cartbean>> flowable, แท็กสตริงสุดท้าย) {subscriber3 = flowable.subscribeon (schedulers.io ()) .observeon (Androidschedulers.mainThread () @Override โมฆะสาธารณะ onnext (MessageBean <รายการ <cartbean >> รายการ) {if (list! = null) {String code = list.getmsg (); - } // เพิ่มโมฆะตะกร้าสินค้าสาธารณะ Get4 (Flowable <MessageBean <list <cartbean>> flowable, แท็กสตริงสุดท้าย) {subscriber4 = flowable.subscribeon (schedulers.io ()) .Observeon (Androidschedulers.mainThread () โมฆะสาธารณะ onnext (MessageBean <list <cartbean>>>; ถ้า (รายการ! = null) {รหัสสตริง = list.getmsg (); - 5. หน้ารายละเอียดผลิตภัณฑ์ MainActivity
แพ็คเกจ com.bwei.gepeng.view; นำเข้า Android.content.intent; นำเข้า Android.os.bundle; นำเข้า Android.support.v7.app.appcompatactivity; นำเข้า Android.View.View; นำเข้า Android.widget.TextView; นำเข้า Android.widget.toast; นำเข้า com.bwei.gepeng.r; นำเข้า com.bwei.gepeng.entity.goodsshowbean; นำเข้า com.bwei.gepeng.presenter.newspresenter; นำเข้า com.facebook.drawee.view.simpledraweeview; นำเข้า java.util.hashmap; นำเข้า java.util.map; นำเข้า butterknife.bindview; นำเข้า Butterknife.Butterknife; นำเข้า butterknife.onclick; คลาสสาธารณะ MainActivity ขยาย AppCompatActivity ใช้ iview {@bindView (r.id.my_image_view) SimpledRaweeView MyImageView; @BindView (r.id.goods_title) TextView GoodStitle; @BindView (r.id.goods_price) TextView GoodsPrice; ผู้นำเสนอหนังสือพิมพ์เอกชน; @Override ป้องกันโมฆะ onCreate (Bundle SavedInstancestate) {super.oncreate (savedinstancestate); SetContentView (R.Layout.Activity_Main); butterknife.bind (นี่); ผู้นำเสนอ = Newspresenter (); presenter.attachview (นี่); //http://120.27.23.105/product/getProductDetail?pid=75&source=android Map <String, String> MAP = ใหม่ HashMap <> (); map.put ("PID", "75"); presenter.getData (แผนที่ "สินค้า"); } @Override โมฆะสาธารณะ onsuccess (Object O, String tag) {ถ้า (tag.equals ("สินค้า")) {ถ้า (o! = null) {data goodsshowbean = (goodsshowbean) o; //log.e("GP "," onsuccess: " + data.toString ()); myimageview.setImageuri (data.getImages (). แยก ("// |") [0]); goodstitle.settext (data.getTitle ()); GoodsPrice.settext ("¥"+data.getPrice ()); }} อื่นถ้า (tag.equals ("เพิ่ม")) {ถ้า (o! = null) {สตริง msg = (สตริง) o; toast.maketext (mainactivity.his, msg, toast.length_short). show (); }}} @Override โมฆะสาธารณะ onfailed (Exception e, แท็กสตริง) {} @onclick ({r.id.btn_addcart, r.id.btn_shopping}) โมฆะสาธารณะ onviewclicked (ดูมุมมอง) {switch (view.getId () map.put ("uid", "3802"); map.put ("PID", "75"); presenter.getData (แผนที่, "เพิ่ม"); //toast.maketext(MainActivity.his,"Add ประสบความสำเร็จ ", toast.length_short). show (); หยุดพัก; กรณี r.id.btn_shopping: เจตนาเจตนา = ความตั้งใจใหม่ (mainactivity.his, main2activity.class); startactivity (เจตนา); หยุดพัก; - 6. รายการรองอะแดปเตอร์ Expandableadapter
แพ็คเกจ com.bwei.gepeng.adapter; นำเข้า Android.content.context; นำเข้า Android.View.View; นำเข้า Android.view.viewGroup; นำเข้า Android.widget.baseExpandableListadapter; นำเข้า Android.widget.button; นำเข้า Android.widget.checkbox; นำเข้า Android.widget.TextView; นำเข้า Android.widget.toast; นำเข้า com.bwei.gepeng.r; นำเข้า com.bwei.gepeng.entity.childbean; นำเข้า com.bwei.gepeng.entity.groupbean; นำเข้า com.bwei.gepeng.myview.adddeleteview; นำเข้า com.bwei.gepeng.view.main2activity; นำเข้า com.facebook.drawee.view.simpledraweeview; นำเข้า java.util.arraylist; นำเข้า java.util.list; Public Class Expandableadapter ขยาย BaseExpandableListadapter {บริบทส่วนตัว; รายการส่วนตัว <RoupBean> GroupBeen = New ArrayList <> (); รายการส่วนตัว <list <childbean >> childbeen = new ArrayList <> (); private Main2Activity main; public ExpandableAdapter(Context context, List<GroupBean> groupBeen, List<List<ChildBean>> childBeen) { this.context = context; this.groupBeen = groupBeen; this.childBeen = childBeen; this.main = (Main2Activity) context; } //Interface callback private onDeleteGoods onDleGoods; public interface onDeleteGoods{ void onDelGoods(int i,int i1,String pid); } public void setOnDeleteGoods(onDeleteGoods onDleGoods){ this.onDleGoods=onDleGoods; } @Override public int getGroupCount() { return groupBeen.size(); } @Override public int getChildrenCount(int i) { return childBeen.get(i).size(); } @Override public Object getGroup(int i) { return groupBeen.get(i).getSellerName(); } @Override public Object getChild(int i, int i1) { return childBeen.get(i).get(i1).getTitle(); } @Override public long getGroupId(int i) { return i; } @Override public long getChildId(int i, int i1) { return i1; } @Override public boolean hasStableIds() { return false; } //Level 1 group @Override public View getGroupView(final int i, boolean b, View view, ViewGroup viewGroup) { //Load view view=View.inflate(context, R.layout.ex_group_item ,null); final CheckBox groupCb= view.findViewById(R.id.group_checkbox); TextView shopName= view.findViewById(R.id.shop_name); shopName.setText(groupBeen.get(i).getSellerName()); groupCb.setChecked(groupBeen.get(i).isGropuCb()); //Group check button groupCb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { boolean gchecked = groupCb.isChecked(); groupBeen.get(i).setGropuCb(gchecked); //Main2Activity main= (Main2Activity) context; for(GroupBean i: groupBeen){ boolean groupCb = i.isGropuCb(); if(!groupCb){ main.allCheckbox.setChecked(false); break; }else{ main.allCheckbox.setChecked(true); } } int size = childBeen.get(i).size(); if(gchecked){ for(int r=0;r<size;r++){ //Toast.makeText(context,"group button"+gchecked+""+size, Toast.LENGTH_SHORT).show(); childBeen.get(i).get(r).setChildCb(true); } }else{ for(int r=0;r<size;r++){ //Toast.makeText(context,"group button"+gchecked+""+size, Toast.LENGTH_SHORT).show(); childBeen.get(i).get(r).setChildCb(false); } } notifyDataSetChanged(); main.changesum(childBeen); } }); return view; } //Second-level group @Override public View getChildView(final int i, final int i1, boolean b, View v, ViewGroup viewGroup) { //Load view v=View.inflate(context, R.layout.ex_child_item ,null); final CheckBox childCb = v.findViewById(R.id.child_checkbox); TextView shopTitle= v.findViewById(R.id.shop_title); TextView shopPrice= v.findViewById(R.id.shop_price); //ImageView shopImg=v.findViewById(R.id.shop_img); //draweeView.setImageURI(uri); SimpleDraweeView shopImg = v.findViewById(R.id.shop_img); final AddDeleteView adv = v.findViewById(R.id.adv); Button shop_delete=v.findViewById(R.id.shop_delete); childCb.setChecked(childBeen.get(i).get(i1).isChildCb()); String images = childBeen.get(i).get(i1).getImages(); //Glide.with(context).load(images).into(shopImg); shopImg.setImageURI(images); shopTitle.setText(childBeen.get(i).get(i1).getTitle()); shopPrice.setText(childBeen.get(i).get(i1).getPrice()+""); adv.setNumber(childBeen.get(i).get(i1).getNum()); //final Main2Activity main= (Main2Activity) context; //Control the visible and hidden if(childBeen.get(i).get(i1).isBtn()){ shop_delete.setVisibility(View.VISIBLE); }else{ shop_delete.setVisability(View.INVISIBLE); } //Delete button listening shop_delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { onDleGoods.onDelGoods(i,i1,childBeen.get(i).get(i1).getPid()+""); } }); //AddDelClickListener(new AddDeleteView.OnAddDelClickListener() { @Override public void onAddClick(View v) { int number = adv.getNumber(); number++; adv.setNumber(number); childBeen.get(i).get(i1).setNum(number); main.changesum(childBeen); } @Override public void onDelClick(View v) { int number = adv.getNumber(); if(number==1){ Toast.makeText(context,"The minimum number of users is 1",Toast.LENGTH_SHORT).show(); } number--; adv.setNumber(number); childBeen.get(i).get(i1).setNum(number); main.changesum(childBeen); - //Checkbox of secondary group listen childCb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { boolean flag=false; boolean cchecked = childCb.isChecked(); childBeen.get(i).get(i1).setChildCb(cchecked); //Toast.makeText(context,"child button"+cchecked+""+i1, Toast.LENGTH_SHORT).show(); // Main2Activity main= (Main2Activity) context; for (List<ChildBean> i1:childBeen){ for(int r=0;r<i1.size();r++) { boolean childCb1 = i1.get(r).isChildCb(); if(!childCb1){ main.allCheckbox.setChecked(false); groupBeen.get(i).setGropuCb(false); flag=true; break; }else{ main.allCheckbox.setChecked(true); groupBeen.get(i).setGropuCb(true); } } if(flag){ break; } } int size = childBeen.get(i).size(); for(int x=0;x<size;x++) { boolean childCb1 = childBeen.get(i).get(x).isChildCb(); if(!childCb1){ groupBeen.get(i).setGropuCb(false); break; }else{ groupBeen.get(i).setGropuCb(true); } } notifyDataSetChanged(); main.changesum(childBeen); } }); return v; } @Override public boolean isChildSelectable(int i, int i1) { return false; - 7.购物车页面逻辑Main2Activity
package com.bwei.gepeng.view; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.CheckBox; import android.widget.ExpandableListView; import android.widget.TextView; import com.bwei.gepeng.R; import com.bwei.gepeng.adapter.ExpandableAdapter; import com.bwei.gepeng.entity.CartBean; import com.bwei.gepeng.entity.ChildBean; import com.bwei.gepeng.entity.GroupBean; import com.bwei.gepeng.presenter.NewsPresenter; นำเข้า java.util.arraylist; นำเข้า java.util.hashmap; นำเข้า java.util.list; นำเข้า java.util.map; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; public class Main2Activity extends AppCompatActivity implements IView { @BindView(R.id.exListView) ExpandableListView exListView; @BindView(R.id.all_chekbox) public CheckBox allCheckbox; @BindView(R.id.total_price) TextView totalPrice; @BindView(R.id.total_number) TextView totalnumber; @BindView(R.id.tv_go_to_pay) TextView tvGoToPay; @BindView(R.id.tv_go_to_del) TextView tvGoToDel; private ExpandableAdapter expandableAdapter; private boolean flagdel = true; private boolean flagdel = false; private NewsPresenter presenter; List<GroupBean> groupBeen = new ArrayList<>(); List<List<ChildBean>> childBeen = new ArrayList<>(); int i; int i1; @Override ป้องกันโมฆะ onCreate (Bundle SavedInstancestate) {super.oncreate (savedinstancestate); setContentView(R.layout.activity_main2); ButterKnife.bind(this); //Get the secondary list adapter expandableAdapter = new ExpandableAdapter(Main2Activity.this, groupBeen, childBeen); exListView.setAdapter(expandableAdapter); exListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView expandableListView, View view, int i, long l) { return true; } }); presenter = new NewsPresenter(); presenter.attachView(this); //http://120.27.23.105/product/getCarts?uid=3802&source=android Map<String, String> map = new HashMap<>(); map.put("uid", "3802"); presenter.getData(map, "cart"); expandableAdapter.setOnDeleteGoods(new ExpandableAdapter.onDeleteGoods() { @Override public void onDelGoods(int i, int i1, String pid) { Main2Activity.this.i = i; Main2Activity.this.i1 = i1; Map<String, String> map = new HashMap<>(); map.put("uid", "3802"); map.put("pid", pid); presenter.getData(map, "del"); } }); } @Override public void OnSuccess(Object o, String tag) { if (tag.equals("cart")) { if (o != null) { List<CartBean> data = (List<CartBean>) o; for (CartBean i : data) { GroupBean groupBean = new GroupBean(i.getSellerName(), false); this.groupBeen.add(groupBean); List<CartBean.ListBean> list = i.getList(); List<ChildBean> ls = new ArrayList<>(); for (CartBean.ListBean w : list) { String[] split = w.getImages().split("//|"); ChildBean childBean = new ChildBean(w.getTitle(), split[0], w.getPrice(), 1, false, false, w.getPid()); ls.add(childBean); } this.childBeen.add(ls); } for (int i = 0; i < expandableAdapter.getGroupCount(); i++) { exListView.expandGroup(i); } } } else if (tag.equals("del")) { if (o != null) { String msg = (String) o; if (this.i != -1 && this.i1 != -1) { int size = childBeen.get(i).size(); if (size == 1) { childBeen.remove(i); groupBeen.remove(i); } else { childBeen.get(i).remove(i1); } changesum(childBeen); this.i = -1; this.i1 = -1; if(flagdel){ delGoods(); } } } } } } expandableAdapter.notifyDataSetChanged(); } @Override public void OnFailed(Exception e, String tag) { } @OnClick({R.id.back, R.id.edit, R.id.all_chekbox,R.id.tv_go_to_del}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.back: finish(); หยุดพัก; case R.id.edit: if(flagedit){ tvGoToPay.setVisability(View.GONE); tvGoToDel.setVisability(View.VISIBLE); }else{ tvGoToPay.setVisability(View.VISIBLE); tvGoToDel.setVisability(View.GONE); } for (List<ChildBean> i1 : childBeen) { for (int r = 0; r < i1.size(); r++) { i1.get(r).setBtn(flagedit); } } flagedit = !flagedit; expandableAdapter.notifyDataSetChanged(); หยุดพัก; case R.id.all_chekbox: boolean checked = allCheckbox.isChecked(); //Change the first-level item check box for (GroupBean i : groupBeen) { i.setGropuCb(checked); } //Change the second-level item check box for (List<ChildBean> i1 : childBeen) { for (int r = 0; r < i1.size(); r++) { i1.get(r).setChildCb(checked); } } expandableAdapter.notifyDataSetChanged(); changesum(childBeen); หยุดพัก; case R.id.tv_go_to_del: if(childBeen.size()!=0){ for (List<ChildBean> i1 : childBeen) { for (int r = 0; r < i1.size(); r++) { boolean childCb1 = i1.get(r).isChildCb(); if (childCb1) { flagdel=true; delGoods(); if(allCheckbox.isChecked()){ allCheckbox.setChecked(false); } หยุดพัก; } } if(flagdel){ break; } } } //Toast.makeText(Main2Activity.this,flagdel+"",Toast.LENGTH_SHORT).show(); หยุดพัก; } } //Recursively delete private void delGoods(){ Boolean flag=false; for(int p=0;p<childBeen.size();p++) { for (int r = 0; r < childBeen.get(p).size(); r++) { boolean childCb1 = childBeen.get(p).get(r).isChildCb(); if(p==childBeen.size()-1&&r==childBeen.get(p).size()-1){ flagdel=false; } if (childCb1) { int pid = childBeen.get(p).get(r).getPid(); this.i = p; this.i1 = r; แผนที่ <สตริงสตริง> แผนที่ = ใหม่ hashmap <> (); map.put("uid", "3802"); map.put("pid", pid+""); presenter.getData(map, "del"); flag=!flag; หยุดพัก; } } if(flag){ break; } } } //Total price of calculation and quantity public void changesum(List<List<ChildBean>> childBeen) { int count = 0; double sum = 0; for (List<ChildBean> i1 : childBeen) { for (int r = 0; r < i1.size(); r++) { boolean childCb1 = i1.get(r).isChildCb(); if (childCb1) { double price = i1.get(r).getPrice(); int num = i1.get(r).getNum(); sum += price * num; count++; } } } totalPrice.setText("¥" + sum); totalnumber.setText("Total products:" + count + "piece"); -6.附
shape图edit
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFFFFF" /> <!--<corners android:radius="3dip"/>--> <stroke android:width="1dip" android:color="#BDC7D8" /> </shape>
Application 初始化Fresco
import android.app.Application; import com.facebook.drawee.backends.pipeline.Fresco; public class App extends Application{ @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); -以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。