日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android實現淘寶購物車

瀏覽:187日期:2022-06-04 11:04:41

本文實例為大家分享了Android實現淘寶購物車的具體代碼,供大家參考,具體內容如下

功能基本和淘寶購物車一樣,商品按照店鋪分類顯示,全選,反選,選中商品數量變化,總價隨之變化。效果圖

Android實現淘寶購物車

思路:店鋪和商品都增加一個select屬性,列表的CheckBox選擇或未選中狀態改變同時設置店鋪和商品的select屬性,每次CheckBox狀態改變設置select的值等于cb.isChecked()

購物車頁面布局文件activity_shopping_car

<?xml version='1.0' encoding='utf-8'?><LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' xmlns:app='http://schemas.android.com/apk/res-auto' xmlns:tools='http://schemas.android.com/tools' android:layout_width='match_parent' android:layout_height='match_parent' android:orientation='vertical' tools:context='.ui.activity.ShoppingCarActivity'> <com.hjq.bar.TitleBarandroid: android:layout_width='match_parent'android:layout_height='wrap_content'app:rightTitle='管理'app:title='購物車' /> <com.qiyetec.flyingsnail.widget.HintLayoutandroid: android:layout_width='match_parent'android:layout_height='0dp'android:layout_weight='1'> <com.scwang.smartrefresh.layout.SmartRefreshLayout android: android:layout_width='match_parent' android:layout_height='match_parent'> <com.scwang.smartrefresh.layout.header.ClassicsHeaderandroid:layout_width='match_parent'android:layout_height='wrap_content' /> <androidx.recyclerview.widget.RecyclerViewandroid: android:layout_width='match_parent'android:layout_height='wrap_content' /> </com.scwang.smartrefresh.layout.SmartRefreshLayout> </com.qiyetec.flyingsnail.widget.HintLayout> <LinearLayoutandroid: android:layout_width='match_parent'android:layout_height='wrap_content'android:layout_marginTop='@dimen/ali_auth_space_10'android:background='#fff'android:gravity='center_vertical'android:padding='15dp'> <CheckBox android: android:layout_width='wrap_content' android:layout_height='wrap_content' android:button='@drawable/selector_checkbox_green' android:text='全選' /> <View android:layout_width='0dp' android:layout_height='1dp' android:layout_weight='1' /> <LinearLayout android: android:layout_width='wrap_content' android:layout_height='wrap_content'> <TextViewandroid:layout_width='wrap_content'android:layout_height='wrap_content'android:text='合計:'android:textColor='#333'android:textSize='15sp' /> <TextViewandroid: android:layout_width='wrap_content'android:layout_height='wrap_content'android:layout_marginLeft='5dp'android:text='¥0.00'android:textColor='#DA3527'android:textSize='24sp' /> <TextViewandroid: android:layout_width='wrap_content'android:layout_height='wrap_content'android:layout_marginLeft='10dp'android:background='@drawable/shape_red10'android:paddingLeft='15dp'android:paddingTop='5dp'android:paddingRight='15dp'android:paddingBottom='5dp'android:text='結算'android:textColor='#fff'android:textSize='18sp' /></LinearLayout> <TextView android: android:layout_width='wrap_content' android:layout_height='wrap_content' android:background='@drawable/shape_stroke_red15' android:paddingLeft='15dp' android:paddingTop='5dp' android:paddingRight='15dp' android:paddingBottom='5dp' android:text='刪除' android:textColor='#DA3527' android:textSize='18sp' android:visibility='gone' /> </LinearLayout></LinearLayout>

Java代碼

public class ShoppingCarActivity extends MyActivity implements StatusAction { @BindView(R.id.titleBar) TitleBar titleBar; @BindView(R.id.rv) RecyclerView rv; @BindView(R.id.hintLayout) HintLayout hintLayout; @BindView(R.id.ll_bottom) LinearLayout ll_bottom; @BindView(R.id.ll) LinearLayout ll; @BindView(R.id.tv_total_price) TextView tv_total_price; @BindView(R.id.tv_del) TextView tv_del; @BindView(R.id.cb_all) CheckBox cb_all; @BindView(R.id.smartRefreshLayout) SmartRefreshLayout smartRefreshLayout; private ShoppingCarAdapter shoppingCarAdapter; private int total_page, page = 1; @Override protected int getLayoutId() {return R.layout.activity_shopping_car; } @Override protected void initView() {setOnClickListener(R.id.tv_buy, R.id.tv_del); } @Override protected void initData() {EventBus.getDefault().register(this);//網絡請求 獲取購物車數據getCarData();LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, RecyclerView.VERTICAL, false);rv.setLayoutManager(linearLayoutManager);shoppingCarAdapter = new ShoppingCarAdapter(this);//商品選中價格改變回調shoppingCarAdapter.setOnPriceChangeListener(new ShoppingCarAdapter.OnPriceChangeListener() { @Override public void onClick(boolean allSelect, String totalPrice) { cb_all.setChecked(allSelect);tv_total_price.setText('¥' + totalPrice); }});rv.setAdapter(shoppingCarAdapter);//全選 反選cb_all.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {if (shoppingCarAdapter != null && shoppingCarAdapter.getData() != null) { for (int i = 0; i < shoppingCarAdapter.getData().size(); i++) {shoppingCarAdapter.getData().get(i).setSelect(cb_all.isChecked());for (int j = 0; j < shoppingCarAdapter.getData().get(i).getItem_data().size(); j++) { shoppingCarAdapter.getData().get(i).getItem_data().get(j).setSelect(cb_all.isChecked());} } shoppingCarAdapter.notifyDataSetChanged(); shoppingCarAdapter.calculatePrice();} }});smartRefreshLayout.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh(@NonNull RefreshLayout refreshLayout) {page = 1;getCarData();refreshLayout.finishRefresh(); }}).setOnLoadMoreListener(new OnLoadMoreListener() { @Override public void onLoadMore(@NonNull RefreshLayout refreshLayout) {if (page <= total_page) { getCarData();}refreshLayout.finishLoadMore(); }}); } @Subscribe(threadMode = ThreadMode.MAIN) public void onGetMessage(MessageWrap message) {if (message.message.equals('refresh_car')) { getCarData();} } @Override public void onDestroy() {super.onDestroy();EventBus.getDefault().unregister(this); } @Override public void onRightClick(View v) {if (titleBar.getRightTitle().equals('管理')) { titleBar.setRightTitle('完成'); ll.setVisibility(View.GONE); tv_del.setVisibility(View.VISIBLE);} else if (titleBar.getRightTitle().equals('完成')) { titleBar.setRightTitle('管理'); ll.setVisibility(View.VISIBLE); tv_del.setVisibility(View.GONE);} } @SingleClick @Override public void onClick(View v) {switch (v.getId()) { //點擊結算 case R.id.tv_buy:if (shoppingCarAdapter != null && shoppingCarAdapter.getData() != null) { JSONArray ja = new JSONArray(); for (ShoppingCarBean shoppingCarBean : shoppingCarAdapter.getData()) {JSONArray array = new JSONArray();JSONObject object = null;for (ShoppingCarBean.ItemDataBean itemDataBean : shoppingCarBean.getItem_data()) if (itemDataBean.isSelect()) {object = new JSONObject();if (StringUtils.isNotNullOrEmpty(shoppingCarBean.getShop().getShop_id())) object.put('shop_id', shoppingCarBean.getShop().getShop_id());else object.put('shop_id', 1);JSONObject object1 = new JSONObject();object1.put('item_id', itemDataBean.getItem_id());object1.put('count', itemDataBean.getCount());object1.put('cart_id', itemDataBean.getCart_id());object1.put('sku_id', itemDataBean.getSku_id());array.add(object1);object.put('items', array); }if (object != null) ja.add(object); } // Log.i('logger', 'onClick: ' + JSONObject.toJSONString(ja)); if (ja != null && ja.size() > 0) {//提交confirmOrder(ja); } elsetoast('請選擇商品');}break; case R.id.tv_del:if (shoppingCarAdapter != null && shoppingCarAdapter.getData() != null) { List<String> list = new ArrayList<>(); for (ShoppingCarBean shoppingCarBean : shoppingCarAdapter.getData()) {for (ShoppingCarBean.ItemDataBean itemDataBean : shoppingCarBean.getItem_data()) if (itemDataBean.isSelect()) {list.add(itemDataBean.getCart_id()); } } delCart(list);}break;} } @Override public HintLayout getHintLayout() {return hintLayout; } }

adapter代碼

public final class ShoppingCarAdapter extends MyAdapter<ShoppingCarBean> { public ShoppingCarAdapter(Context context) {super(context); } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {return new ViewHolder(); } final class ViewHolder extends MyAdapter.ViewHolder {@BindView(R.id.cb)CheckBox cb;@BindView(R.id.iv_shopicon)ImageView iv_shopicon;@BindView(R.id.tv_shopname)TextView tv_shopname;@BindView(R.id.ll)LinearLayout linearLayout; ViewHolder() { super(R.layout.item_car);} @Overridepublic void onBindView(int position) { ShoppingCarBean bean = getItem(position); tv_shopname.setText(bean.getShop().getShop_name()); cb.setChecked(bean.isSelect()); //每次添加前先移除所有布局 linearLayout.removeAllViews(); if (bean.getItem_data() != null) {//動態添加商品列表for (int i = 0; i < bean.getItem_data().size(); i++) { View view = LayoutInflater.from(getContext()).inflate(R.layout.layout_item_car, null); CheckBox c_cb = view.findViewById(R.id.cb); ImageView iv_cover = view.findViewById(R.id.iv); TextView tv_title = view.findViewById(R.id.tv_title); TextView tv_guige = view.findViewById(R.id.tv_guige); TextView tv_price = view.findViewById(R.id.tv_price); TextView tv_count = view.findViewById(R.id.tv_count); TextView tv_des = view.findViewById(R.id.tv_des); TextView tv_add = view.findViewById(R.id.tv_add); tv_title.setText(bean.getItem_data().get(i).getTitle()); tv_price.setText('¥' + bean.getItem_data().get(i).getZk_price()); tv_count.setText('' + bean.getItem_data().get(i).getCount()); tv_guige.setText(bean.getItem_data().get(i).getSku()); Glide.with(getContext()).load(bean.getItem_data().get(i).getPic()) .transform(new RoundedCorners((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, getContext().getResources().getDisplayMetrics()))) .into(iv_cover); if (bean.isSelect()) {c_cb.setChecked(true); } else {c_cb.setChecked(bean.getItem_data().get(i).isSelect()); } int finalI = i; tv_des.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) { if (bean.getItem_data().get(finalI).getCount() > 1) {bean.getItem_data().get(finalI).setCount(bean.getItem_data().get(finalI).getCount()-1);tv_count.setText(bean.getItem_data().get(finalI).getCount()+'');calculatePrice(); } elseToastUtils.show('不能再少了哦~'); } }); tv_add.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) { bean.getItem_data().get(finalI).setCount(bean.getItem_data().get(finalI).getCount()+1); tv_count.setText(bean.getItem_data().get(finalI).getCount()+''); calculatePrice();} }); c_cb.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) { boolean select = true; bean.getItem_data().get(finalI).setSelect(c_cb.isChecked()); for (int j = 0; j < bean.getItem_data().size(); j++) {if (bean.getItem_data().get(j).isSelect() == false) { select = false; break;} } bean.setSelect(select); notifyDataSetChanged(); calculatePrice();} }); view.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) { Intent intent = new Intent(getContext(), ShoppingDetailActivity.class); intent.putExtra('item_id', bean.getItem_data().get(finalI).getItem_id()); startActivity(intent);} }); linearLayout.addView(view);} } cb.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) { bean.setSelect(cb.isChecked()); for (int j = 0; j < bean.getItem_data().size(); j++) {bean.getItem_data().get(j).setSelect(cb.isChecked()); } notifyDataSetChanged(); calculatePrice();} });} } public interface OnPriceChangeListener {void onClick(boolean allSelect, String totalPrice); } private OnPriceChangeListener onPriceChangeListener; public void setOnPriceChangeListener(OnPriceChangeListener onPriceChangeListener) {this.onPriceChangeListener = onPriceChangeListener; } public void calculatePrice() {if (onPriceChangeListener != null) { BigDecimal total = new BigDecimal('0.00'); boolean allSelect = true; List<ShoppingCarBean> list = getData(); for (int i = 0; i < getItemCount(); i++) {if (list.get(i).isSelect() == false) allSelect = false;for (int j = 0; j < list.get(i).getItem_data().size(); j++) { if (list.get(i).getItem_data().get(j).isSelect()) {BigDecimal multiply = new BigDecimal(list.get(i).getItem_data().get(j).getZk_price()).multiply(new BigDecimal(list.get(i).getItem_data().get(j).getCount()));BigDecimal price = new BigDecimal(multiply + '');total = total.add(price); }} } onPriceChangeListener.onClick(allSelect, total + '');} }}

RecyclerView條目布局item_car

<?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='wrap_content' android:layout_marginLeft='15dp' android:layout_marginTop='10dp' android:layout_marginRight='15dp' android:background='@drawable/shape_white5' android:orientation='vertical' android:paddingLeft='10dp' android:paddingTop='15dp' android:paddingRight='15dp' android:paddingBottom='20dp'> <LinearLayoutandroid:layout_width='match_parent'android:layout_height='wrap_content'android:gravity='center_vertical'> <CheckBox android: android:layout_width='wrap_content' android:layout_height='wrap_content' android:button='@drawable/selector_checkbox_green' /> <ImageView android: android:layout_width='25dp' android:layout_height='25dp' android:layout_marginLeft='10dp' /> <TextView android: android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_marginLeft='10dp' android:textColor='#333' android:textSize='15sp' android:textStyle='bold' /> </LinearLayout> <LinearLayoutandroid: android:layout_width='match_parent'android:layout_height='wrap_content'android:orientation='vertical'> </LinearLayout> </LinearLayout>

商品條目布局layout_item_car

<?xml version='1.0' encoding='utf-8'?><RelativeLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='match_parent' android:layout_height='wrap_content' android:paddingTop='10dp' android:paddingBottom='5dp'> <CheckBoxandroid: android:layout_width='wrap_content'android:layout_height='wrap_content'android:layout_centerVertical='true'android:button='@drawable/selector_checkbox_green' /> <ImageViewandroid: android:layout_width='75dp'android:layout_height='75dp'android:layout_centerVertical='true'android:layout_marginLeft='8dp'android:layout_toRightOf='@id/cb' /> <TextViewandroid: android:layout_width='wrap_content'android:layout_height='wrap_content'android:layout_marginLeft='10dp'android:layout_toRightOf='@id/iv'android:ellipsize='end'android:maxLines='2'android:textColor='#333'android:textSize='15sp' /> <TextViewandroid: android:layout_width='wrap_content'android:layout_height='wrap_content'android:layout_below='@id/tv_title'android:layout_marginLeft='10dp'android:layout_marginTop='3dp'android:layout_toRightOf='@id/iv'android:background='@drawable/shape_gray5'android:paddingLeft='3dp'android:paddingRight='3dp'android:textColor='#C1C1C1'android:textSize='10sp' /> <TextViewandroid: android:layout_width='wrap_content'android:layout_height='wrap_content'android:layout_below='@id/tv_guige'android:layout_marginLeft='10dp'android:layout_marginTop='8dp'android:layout_toRightOf='@id/iv'android:textColor='#DA3527'android:textSize='18sp' /> <LinearLayoutandroid:layout_width='wrap_content'android:layout_height='25dp'android:layout_below='@id/tv_guige'android:layout_alignParentRight='true'android:layout_marginTop='8dp'android:layout_marginBottom='5dp'android:background='@drawable/stroke_gray2'> <TextView android: android:layout_width='25dp' android:layout_height='match_parent' android:gravity='center' android:text='-' android:textColor='#cccccc' /> <View android:layout_width='0.5dp' android:layout_height='match_parent' android:background='#cccccc' /> <TextView android: android:layout_width='30dp' android:layout_height='match_parent' android:gravity='center' /> <View android:layout_width='0.5dp' android:layout_height='match_parent' android:background='#cccccc' /> <TextView android: android:layout_width='25dp' android:layout_height='match_parent' android:gravity='center' android:text='+' android:textColor='#cccccc' /> </LinearLayout> </RelativeLayout>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: 淘寶
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产麻豆一区| 亚洲精品国产精品粉嫩| 日韩专区欧美专区| 综合日韩av| 欧美黑人巨大videos精品| 日本一区福利在线| 爽爽淫人综合网网站| 欧美亚洲激情| 国产在线看片免费视频在线观看| 日韩高清中文字幕一区| 亚洲综合中文| 亚洲狼人精品一区二区三区| 国产精品日本欧美一区二区三区| 久久精品国产大片免费观看| 久久国产亚洲精品| 成人黄色av| 日韩精品第二页| 欧美亚洲专区| 日本欧美在线| 欧美91在线|欧美| 日韩不卡免费视频| 日韩精品一区二区三区av | 在线视频亚洲欧美中文| 伊人成人在线视频| 日本一区二区中文字幕| 日本不卡视频在线观看| 日韩中文字幕视频网| 久久国产麻豆精品| 国产女人18毛片水真多18精品| 日本一不卡视频| 国产欧美一区二区三区国产幕精品 | 国产精品主播| 国产成人久久精品麻豆二区| 国产日韩欧美中文在线| 奇米色欧美一区二区三区| 国产精品久久久久77777丨| 日本午夜精品一区二区三区电影| 日韩精品成人在线观看| 精品中文字幕一区二区三区四区| 久久精品国产99国产| 精品美女视频 | 国产精品久久久久久久久免费高清 | 亚洲欧美日韩专区| 蜜臀国产一区二区三区在线播放| 欧美综合另类| 美国三级日本三级久久99 | 国产一区二区三区日韩精品| 激情综合在线| 99国产精品| 亚洲天堂日韩在线| 精品理论电影在线| 91一区二区| 国产真实久久| 男女男精品视频网| 91精品视频一区二区| 精品色999| 欧美日韩国产高清| 亚洲tv在线| 日本一二区不卡| 好看的亚洲午夜视频在线| 亚洲精品三级| 日韩在线不卡| 中国女人久久久| 日本不卡视频在线| 日韩综合一区| 日韩一级网站| 亚洲黄页一区| 国产日产精品_国产精品毛片| 91大神在线观看线路一区| 在线天堂资源www在线污| 性一交一乱一区二区洋洋av| 91精品国产自产在线丝袜啪| 久久视频国产| 青青草国产成人99久久| 国产福利片在线观看| 日韩在线观看一区二区三区| 精品国产美女a久久9999| 亚洲午夜精品久久久久久app| 黄色成人在线网址| 国产日韩一区二区三免费高清| 色网在线免费观看| 免费成人在线影院| 国产精品日本一区二区不卡视频| 美女av一区| 午夜电影一区| 日韩欧美少妇| 国产精品一站二站| 99xxxx成人网| 国产成人免费精品| 日本欧美大码aⅴ在线播放| 亚洲欧洲高清| 蜜臀久久久久久久| 久久视频国产| 国产精品videossex久久发布| 免费日本视频一区| 中文字幕在线看片| 欧美在线观看天堂一区二区三区| 久久亚洲二区| 久久精品国产99国产| 国产精品一区亚洲| 水野朝阳av一区二区三区| 国产中文字幕一区二区三区| 国产日韩视频| 久色成人在线| 电影亚洲精品噜噜在线观看| 国产精品3区| 天堂va蜜桃一区二区三区| 欧美日韩国产观看视频| 国产欧美一区二区色老头| 亚洲欧美日韩专区| 欧洲毛片在线视频免费观看| 精品中文在线| 爽好久久久欧美精品| 日本综合字幕| 久久激情五月婷婷| 亚洲精品观看| 国产午夜精品一区二区三区欧美 | 天堂va欧美ⅴa亚洲va一国产| 欧美+亚洲+精品+三区| 国产aⅴ精品一区二区四区| 亚洲ab电影| 亚洲男女自偷自拍| 国产精品久av福利在线观看| 日韩影院精彩在线| 成人日韩在线观看| 国产伊人久久| 91视频久久| 麻豆高清免费国产一区| 久久激情五月婷婷| 日韩综合一区二区| 亚洲视频国产精品| 天堂精品久久久久| 久久成人国产| 亚洲一区导航| 国产色综合网| 亚洲精品一区二区在线看| 黄色在线一区| 一区二区视频欧美| 亚洲国内精品| 福利在线免费视频| 久久久免费人体| 国产精品欧美在线观看| 亚洲精品人人| 国产日韩一区| 欧美在线首页| 麻豆成人91精品二区三区| 国产精品啊v在线| 欧美成人一二区| 久久三级中文| 国产精品入口久久| 97国产精品| 日韩理论片av| 亚洲少妇一区| 亚洲一区二区三区在线免费| 日韩专区在线视频| 中文视频一区| 日韩激情一二三区| 国产精品第一| 久久免费影院| 国产一区二区三区免费在线| 福利一区二区三区视频在线观看| 97在线精品| 欧美日韩视频一区二区三区| 亚洲一区二区免费看| 欧美日韩a区| 免费观看亚洲天堂| 欧美国产三级| 香蕉人人精品| 欧美在线亚洲| 亚洲精品影院在线观看| 日韩精品久久理论片| 国产亚洲字幕| 你懂的亚洲视频| 婷婷丁香综合| 首页欧美精品中文字幕| 免费在线播放第一区高清av| 欧美日韩一区自拍| 精品视频一区二区三区四区五区 | 亚洲欧洲一区| 丝袜美腿亚洲一区二区图片| 国产精品视频一区二区三区| 久久av网址| 婷婷色综合网| 日韩精品五月天| 卡一精品卡二卡三网站乱码| 亚洲福利国产| 蜜桃视频一区二区| 精品一区二区三区中文字幕在线| 国产黄大片在线观看| 精品国产aⅴ| 日韩一级欧洲| 日韩在线观看中文字幕| 视频在线不卡免费观看| 99国产精品久久久久久久成人热| 日韩在线二区| 亚洲精品一二| 国产成人免费精品| 涩涩涩久久久成人精品| 精品国产一区二区三区性色av| 亚洲伊人影院|