json串  shop.json
{  "code" : 200 ,
"orderData" : [
{
"shopId": 1,
"shopName":"京东自营",
"cartlist": [
{
"id": 1,
"shopId": 1,
"shopName": "京东自营",
"defaultPic": "https://img30.360buyimg.com/popWareDetail/jfs/t3208/194/7616404169/244198/369625db/58b7d093N03520fb7.jpg",
"productId": 1,
"productName": "三只松鼠_零食大礼包",
"color": "黑色",
"size": "18L",
"price": 20,
"count":1
},
{
"id": 2,
"shopId": 1,
"shopName": "京东自营",
"defaultPic": "https://img14.360buyimg.com/n0/jfs/t2971/15/167732091/93002/204c1016/574d9d9aNe4e6fa7a.jpg",
"productId": 2,
"productName": "小米心跳手环",
"color": "白色",
"size": "20XXL",
"price": 148,
"count": 1
}
]
}
,
{
"shopId": 2,
"shopName":"海澜之家",
"cartlist": [
{
"id": 1,
"shopId": 2,
"shopName": "海澜之家",
"defaultPic": "https://img30.360buyimg.com/popWaterMark/jfs/t4075/83/1343091204/132469/9034cb9c/5873496bN68020ba8.jpg",
"productId": 1,
"productName": "短袖T恤男 2017夏季新品",
"color": "蓝色",
"size": "30X",
"price": 181,
"count":1
}
]
}
,
{
"shopId": 3,
"shopName":"OPPO官方旗舰店",
"cartlist": [
{
"id": 1,
"shopId": 3,
"shopName": "OPPO官方旗舰店",
"defaultPic": "https://img10.360buyimg.com/cms/jfs/t6064/272/2163314583/157700/442d6477/593c1c49N7c63a7d9.jpg",
"productId": 1,
"productName": "OPPO R11 全网通",
"color": "蓝色",
"size": "30X",
"price": 1999,
"count":1
},
{
"id": 2,
"shopId": 3,
"shopName": "OPPO官方旗舰店",
"defaultPic": "https://img14.360buyimg.com/n0/jfs/t3142/194/4953241722/254855/1651c2b1/585b9021Nf653e48a.jpg",
"productId": 1,
"productName": "OPPO R9 全网通",
"color": "蓝色",
"size": "30X",
"price": 999,
"count":1
}
]
}
]
}
//导入依赖
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.google.code.gson:gson:2.8.2'
compile 'com.squareup.picasso:picasso:2.5.1'//主类
public class MainActivity extends AppCompatActivity {    @BindView(R.id.rv)    RecyclerView rv;    @BindView(R.id.checkbox)    CheckBox checkbox;    @BindView(R.id.tv)    TextView tv;    @BindView(R.id.bt)    Button bt;    List<ShopBean.OrderDataBean.CartlistBean> list = new ArrayList<ShopBean.OrderDataBean.CartlistBean>();    private LinearLayoutManager manager;    private ShopAdapter adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ButterKnife.bind(this);//上面可以使用网络请求数据,进行解析try {            InputStream inputStream = getAssets().open("shop.json");            String data = convertStreamToString(inputStream);            Gson gson = new Gson();            ShopBean shopBean = gson.fromJson(data, ShopBean.class);            for (int i = 0; i < shopBean.getOrderData().size(); i++) {                int length = shopBean.getOrderData().get(i).getCartlist().size();                for (int j = 0; j < length; j++) {                    list.add(shopBean.getOrderData().get(i).getCartlist().get(j));                }            }              //设置线性布局            manager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);            rv.setLayoutManager(manager);//进行适配 adapter = new ShopAdapter(this,list);            rv.setAdapter(adapter);adapter.setCheckListener(new ShopAdapter.CheckListener() {                @Override                public void check(boolean check, int position) {                    boolean allCheck = true ;                    float price  = 0 ;                    int count = 0;                    for (int i = 0; i < list.size(); i++) {                        if (list.get(i).isSelect()) {                            price += list.get(i).getPrice() * list.get(i).getCount();                            count++;                        }                    }                    for (int i = 0; i < list.size(); i++) {                        if (!list.get(i).isSelect()) {                            allCheck = false;                            break;                        }                    }                    tv.setText(price+"元");                    bt.setText("结算("+count+")");                    if(allCheck){                        checkbox.setChecked(true);                    }else {                        checkbox.setChecked(false);                    }                }            });        } catch (IOException e) {            e.printStackTrace();        }    }    @OnClick({R.id.checkbox, R.id.bt})    public void onViewClicked(View view) {        switch (view.getId()) {            case R.id.checkbox:                boolean check =   checkbox.isChecked() ;                float price  = 0 ;                int count = 0;                for (int i = 0; i < list.size(); i++) {                    list.get(i).setSelect(check);                    if(check){                        if (list.get(i).isSelect()) {                            price += list.get(i).getPrice() * list.get(i).getCount();                            count++;                        }                    }                }                adapter.notifyDataSetChanged();                tv.setText("¥"+price);                bt.setText("结算("+count+")");                break;            case R.id.bt:                break;        }    }    public  String convertStreamToString(InputStream is) {        BufferedReader reader = new BufferedReader(new InputStreamReader(is));        StringBuilder sb = new StringBuilder();        String line = null;        try {            while ((line = reader.readLine()) != null) {                sb.append(line);            }        } catch (IOException e) {            e.printStackTrace();        } finally {            try {                is.close();            } catch (IOException e) {                e.printStackTrace();            }        }        return sb.toString();    }}// 适配器
public class ShopAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {private Context context;private List<ShopBean.OrderDataBean.CartlistBean> list;public ShopAdapter(Context context, List<ShopBean.OrderDataBean.CartlistBean> list) {this.context = context;this.list = list;}@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = LayoutInflater.from(context).inflate(R.layout.adapter_item, parent, false);MyViewHolder viewHolder = new MyViewHolder(view);return viewHolder;}@Overridepublic void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {if(holder instanceof  MyViewHolder){MyViewHolder myViewHolder = (MyViewHolder) holder;myViewHolder.danjia.setText(list.get(position).getPrice()+"");Picasso.with(context).load(list.get(position).getDefaultPic()).into(myViewHolder.shopface);if(list.get(position).isSelect()){if(!myViewHolder.checkbox.isChecked()){myViewHolder.checkbox.setChecked(true);}} else {myViewHolder.checkbox.setChecked(false);}myViewHolder.checkbox.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {boolean isChecked = list.get(position).isSelect() ;list.get(position).setSelect(!isChecked);notifyDataSetChanged();if(listener != null){listener.check(!isChecked,position);}}});myViewHolder.customviewid.setListener(new MyView.ChangeListener() {@Overridepublic void onChange(int count) {list.get(position).setCount(count);notifyDataSetChanged();if(listener != null){listener.check(list.get(position).isSelect(),position);}}});}}@Overridepublic int getItemCount() {return list.size();}static class MyViewHolder extends RecyclerView.ViewHolder{@BindView(R.id.checkbox)CheckBox checkbox;@BindView(R.id.shopface)ImageView shopface;@BindView(R.id.price)TextView danjia;@BindView(R.id.customviewid)MyView customviewid;MyViewHolder(View view) {super(view);ButterKnife.bind(this, view);}}public CheckListener listener;public void setCheckListener(CheckListener listener){this.listener = listener ;}interface CheckListener {public void check(boolean check,int position);}}
//自定义购物车的加减按钮
public class MyView extends LinearLayout {private EditText content;public MyView(Context context) {super(context);init(context);}public MyView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);init(context);}public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init(context);}private  void init(Context context){View view =  LayoutInflater.from(context).inflate(R.layout.view_layout,null);addView(view);Button revserse = (Button) view.findViewById(R.id.revserse);Button add = (Button) view.findViewById(R.id.add);content = (EditText) view.findViewById(R.id.content);revserse.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {String  result =   content.getText().toString().trim() ;int integerResult =  Integer.valueOf(result);if(integerResult > 1){integerResult = integerResult - 1 ;content.setText(integerResult+"");if(listener != null){listener.onChange(integerResult);}}}});add.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {String  result =   content.getText().toString().trim() ;int integerResult =  Integer.valueOf(result) ;integerResult = integerResult + 1 ;content.setText(integerResult+"");if(listener != null){listener.onChange(integerResult);}}});content.addTextChangedListener(new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {}@Overridepublic void afterTextChanged(Editable s) {if(listener != null){listener.onChange(Integer.parseInt(s.toString()));}}});}public ChangeListener listener ;public void setListener(ChangeListener listener){this.listener = listener;}interface ChangeListener{void onChange(int count);}
}//JavaBean可以自己写
public class ShopBean {/*** code : 200* orderData : [{"shopId":1,"shopName":"京东自营","cartlist":[{"id":1,"shopId":1,"shopName":"京东自营","defaultPic":"https://img30.360buyimg.com/popWareDetail/jfs/t3208/194/7616404169/244198/369625db/58b7d093N03520fb7.jpg","productId":1,"productName":"三只松鼠_零食大礼包","color":null,"size":null,"price":20,"count":2},{"id":2,"shopId":1,"shopName":"京东自营","defaultPic":"https://img14.360buyimg.com/n0/jfs/t2971/15/167732091/93002/204c1016/574d9d9aNe4e6fa7a.jpg","productId":2,"productName":null,"color":null,"size":null,"price":148,"count":3}]},{"shopId":2,"shopName":"海澜之家","cartlist":[{"id":1,"shopId":2,"shopName":"海澜之家","defaultPic":"https://img30.360buyimg.com/popWaterMark/jfs/t4075/83/1343091204/132469/9034cb9c/5873496bN68020ba8.jpg","productId":1,"productName":"短袖T恤男 2017夏季新品","color":null,"size":null,"price":181,"count":1}]}]*/private int code;private List<OrderDataBean> orderData;public int getCode() {return code;}public void setCode(int code) {this.code = code;}public List<OrderDataBean> getOrderData() {return orderData;}public void setOrderData(List<OrderDataBean> orderData) {this.orderData = orderData;}public static class OrderDataBean {/*** shopId : 1* shopName : 京东自营* cartlist : [{"id":1,"shopId":1,"shopName":"京东自营","defaultPic":"https://img30.360buyimg.com/popWareDetail/jfs/t3208/194/7616404169/244198/369625db/58b7d093N03520fb7.jpg","productId":1,"productName":"三只松鼠_零食大礼包","color":null,"size":null,"price":20,"count":2},{"id":2,"shopId":1,"shopName":"京东自营","defaultPic":"https://img14.360buyimg.com/n0/jfs/t2971/15/167732091/93002/204c1016/574d9d9aNe4e6fa7a.jpg","productId":2,"productName":null,"color":null,"size":null,"price":148,"count":3}]*/private int shopId;private String shopName;private List<CartlistBean> cartlist;public int getShopId() {return shopId;}public void setShopId(int shopId) {this.shopId = shopId;}public String getShopName() {return shopName;}public void setShopName(String shopName) {this.shopName = shopName;}public List<CartlistBean> getCartlist() {return cartlist;}public void setCartlist(List<CartlistBean> cartlist) {this.cartlist = cartlist;}public static class CartlistBean {/*** id : 1* shopId : 1* shopName : 京东自营* defaultPic : https://img30.360buyimg.com/popWareDetail/jfs/t3208/194/7616404169/244198/369625db/58b7d093N03520fb7.jpg* productId : 1* productName : 三只松鼠_零食大礼包* color : null* size : null* price : 20* count : 2*/private int id;private int shopId;private String shopName;private String defaultPic;private int productId;private String productName;private Object color;private Object size;private int price;private int count;//商品是否被选中private boolean isSelect = false;//是否是第一个 如果isfirst 等于1 显示商户的名称, 否则隐藏商户的名称private int isFirst = 2;//商户是否被选中private boolean isShopSelect = false;public int getId() {return id;}public void setId(int id) {this.id = id;}public int getShopId() {return shopId;}public void setShopId(int shopId) {this.shopId = shopId;}public String getShopName() {return shopName;}public void setShopName(String shopName) {this.shopName = shopName;}public String getDefaultPic() {return defaultPic;}public void setDefaultPic(String defaultPic) {this.defaultPic = defaultPic;}public int getProductId() {return productId;}public void setProductId(int productId) {this.productId = productId;}public String getProductName() {return productName;}public void setProductName(String productName) {this.productName = productName;}public Object getColor() {return color;}public void setColor(Object color) {this.color = color;}public Object getSize() {return size;}public void setSize(Object size) {this.size = size;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}public int getCount() {return count;}public void setCount(int count) {this.count = count;}public boolean isSelect() {return isSelect;}public void setSelect(boolean select) {isSelect = select;}public int getIsFirst() {return isFirst;}public void setIsFirst(int isFirst) {this.isFirst = isFirst;}public boolean isShopSelect() {return isShopSelect;}public void setShopSelect(boolean shopSelect) {isShopSelect = shopSelect;}}}
}//布局
//主类布局
<android.support.v7.widget.RecyclerViewandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:id="@+id/rv"></android.support.v7.widget.RecyclerView><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><CheckBoxandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/checkbox"android:layout_alignParentLeft="true"android:layout_centerVertical="true"android:text="全选"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/tv"android:layout_centerInParent="true"android:layout_marginLeft="100dp"android:text="总价:"android:textSize="22sp"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:id="@+id/bt"android:text="结算"/></RelativeLayout>
//自定义View布局
<Buttonandroid:layout_width="30dp"android:layout_height="30dp"android:id="@+id/revserse"android:text="-"android:background="#00FFFFFF"/>
<EditTextandroid:text="1"android:background="@null"android:layout_width="30dp"android:layout_height="30dp"android:gravity="center"android:id="@+id/content"/><Buttonandroid:background="#00FFFFFF"android:text="+"android:id="@+id/add"android:layout_width="30dp"android:layout_height="30dp"/>
//适配器里面的条目<CheckBoxandroid:layout_gravity="center"android:id="@+id/checkbox"android:layout_width="wrap_content"android:layout_height="wrap_content" />
<LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:orientation="vertical"android:layout_gravity="center"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><ImageViewandroid:id="@+id/shopface"android:layout_width="80dp"android:layout_height="80dp"android:background="@mipmap/ic_launcher" /><TextViewandroid:id="@+id/price"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="22sp"android:layout_gravity="center"/></LinearLayout><com.bwie.gouwuchedemo.MyViewandroid:id="@+id/customviewid"android:layout_gravity="center"android:layout_width="100dp"android:layout_height="50dp"/></LinearLayout>

淘宝购物车功能的实现相关推荐

  1. 2020用vue实现仿美团导航切换功能和淘宝购物车功能,实现默认第一个导航显示效果?

    总结:之前一直未写过同时实现跳转当前页面和跳转新页面的项目,要么是当前,要么是新页面,今天更新一个两个同时实现的项目. :相信很多人都遇到过router-link通过to跳转页面有时候会不显示内容的b ...

  2. 简要模仿淘宝购物车功能

    一主要功能: 实现通过点击.拖动添加购物车,购物金额自动结算,以及删减物品的功能. 有待改进之处:还未实现在购物车内实现+1,-1功能. 二.效果图 三.相关代码 1,HTML+JS <!DOC ...

  3. 高仿淘宝购物车分分钟让你集成

    前言 做商城类电商app购物车确实一直是一个难点,为什么难呢? 主要原因呢是他里面的逻辑复杂,然后 百度的资源好像都不太理想,好多就是一个简单的listView来实现根本就达不到开发的需求.然后 一般 ...

  4. 面试高频问题——“淘宝购物车”怎么测试

    面试高频问题--"淘宝购物车"怎么测试 测试思维 依然附上测试任何事物的测试思路: 第一步:梳理产品的核心业务流程:明白这是个什么项目,实现了什么业务,以及是怎么实现的? 这个步骤 ...

  5. 你能说说“淘宝购物车”怎么测试么?

    前言 之前我有整理过一系列文章"支付功能如何测试?","抖音直播要如何测试","微信红包如何测试",很多学生说是及时雨,帮助了他们的测试面试 ...

  6. 互联网晚报 | 12月8日 星期三 | 淘宝购物车上线“好友买单”功能;英超联赛正式入驻视频号;中国联通成立5G消息生态联盟...

    今日看点 ✦ 中国联通成立5G消息生态联盟,已搭建300余项示范应用 ✦ 淘宝购物车双12上线"好友买单"功能,将支持填写双地址 ✦ 百度百家号宣布创作者突破460万,2022年将 ...

  7. 互联网晚报 | 10月28日 星期四 | 农夫山泉钟睒睒首次成为中国首富;淘宝购物车分享功能上线;段永平否认牵头OV联合造车...

    ‍ ‍今日看点 ✦ 荣耀打响重回海外第一枪:多国市场发布荣耀50系列 ✦ 段永平否认牵头OPPO.vivo联合造车,称绝不会"重出江湖" ✦ 淘宝购物车分享功能正式上线,可以分享至 ...

  8. 淘宝购物车分享上线第一天:630万人在用购物车社交

    来源 | 电商在线(ID:dianshangmj) 作者 | 吴羚玮 编辑|斯问 当一年中最大的消费季到来,很多人开始关心,"你的购物车里有什么". 网购时代,几乎每个人都有一辆「 ...

  9. 测试网页版淘宝购物车

    测试网页版淘宝购物车 界面测试: 1. 购物车页面布局是否合理,显示是否完整 2. 鼠标浮动在购物车图标,迷你购物车界面显示是否正常 3. 不同店铺的商品在不同的区域正确显示 4. 页面的菜单功能栏正 ...

最新文章

  1. 指定用户 启动 进入 docker容器
  2. fatal error C1021: 无效的预处理器命令“warning”
  3. spark mongo java_java及spark2.X连接mongodb3.X单机或集群的方法(带认证及不带认证)...
  4. 哲学家就餐问题linux源代码,Linux下实现哲学家就餐问题
  5. Redis基本数据类型1--String
  6. k8s Service之ClusterIP示例
  7. 百度地图 开发 乡镇级区域显示_Tableau导入乡镇级地图进行数据展示
  8. 微信壹佰超级名片小程序源码v1.1.16
  9. java web快速入门_Web安全快速入门
  10. 11 Sping框架--AOP的相关概念及其应用
  11. 程序默认在副屏显示_树莓派使用 OLED 屏显示图片及文字
  12. Unity3D基础34.1:打砖块小游戏优化
  13. c1flexGrid 在单元格中显示图片, 及行号
  14. vue 跨域请求js添加代码
  15. WebRTC 之 RTX
  16. java实现代理服务器
  17. 神州数码云平台基础环境搭建
  18. 数字签名和数字证书的区别与联系
  19. 标准盒子模型和IE盒子模型的区别
  20. 关于旅游景点主题的HTML网页设计——北京景点 7页(带订单购物车)

热门文章

  1. 前端代码源码爬取下载工具httrack
  2. 二进制原码反码补码详解
  3. 手机里面的精品APP,让你轻松提升工作效率
  4. Git 回退到指定版本
  5. 深入防火墙记录(2)
  6. Xcode抓包ios
  7. [无线]433M天线、2.4G天线、5G天线长度设计
  8. 人人都是设计师:黄金比在设计里面的运用(附UI视频教程)
  9. 电脑任务栏放在右侧的好处
  10. linux系统查看电脑设备型号,Linux和Unix下查看硬件信息(CPU型号,内存型号,硬盘型号,主板型号)...