博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android ------ RecyclerView 模仿淘宝购物车
阅读量:6232 次
发布时间:2019-06-21

本文共 5920 字,大约阅读时间需要 19 分钟。

hot3.png

电商项目中常常有购物车这个功能,做个很多项目了,都有不同的界面,选了一个来讲一下。

RecyclerView 模仿淘宝购物车功能(删除选择商品,商品计算,选择, 全选反选,商品数量加减等)

 

看看效果图:

 

Activity代码:

/***** * RecyclerView 模仿淘宝购物车功能 * * 删除选择商品,商品计算,选择,全选反选,商品数量加减等 * */public class MainActivity extends AppCompatActivity {    private RecyclerView rvNestDemo;    private CartAdapter cartAdapter;    CartInfo cartInfo;    double price;    int num;    TextView cartNum;    TextView cartMoney;    Button cartShoppMoular;    CheckBox checkBox;    private TextView btnDelete;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        rvNestDemo = (RecyclerView) findViewById(R.id.rv_nest_demo);        cartNum = findViewById(R.id.cart_num);        cartMoney = findViewById(R.id.cart_money);        cartShoppMoular = findViewById(R.id.cart_shopp_moular);        cartShoppMoular.setOnClickListener(new OnClickListener());        checkBox = findViewById(R.id.cbx_quanx_check);        checkBox.setOnClickListener(new OnClickListener());        btnDelete = (TextView) findViewById(R.id.btn_delete);        initView();    }    private void initView() {        btnDelete.setOnClickListener(new OnClickListener());        showData();        rvNestDemo.setLayoutManager(new LinearLayoutManager(this));        DividerItemDecoration itemDecoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);        itemDecoration.setDrawable(ContextCompat.getDrawable(this, R.drawable.line_divider_inset));        rvNestDemo.addItemDecoration(itemDecoration);        cartAdapter = new CartAdapter(this, cartInfo.getData());        rvNestDemo.setAdapter(cartAdapter);        showExpandData();    }    private void showExpandData() {        /**         * 全选         */        cartAdapter.setOnItemClickListener(new OnViewItemClickListener() {            @Override            public void onItemClick(boolean isFlang, View view, int position) {                cartInfo.getData().get(position).setIscheck(isFlang);                int length = cartInfo.getData().get(position).getItems().size();                for (int i = 0; i < length; i++) {                    cartInfo.getData().get(position).getItems().get(i).setIscheck(isFlang);                }                cartAdapter.notifyDataSetChanged();                showCommodityCalculation();            }        });        /**         * 计算价钱         */        cartAdapter.setOnItemMoneyClickListener(new OnItemMoneyClickListener() {            @Override            public void onItemClick(View view, int position) {                showCommodityCalculation();            }        });    }    /***     * 计算商品的数量和价格     */    private void showCommodityCalculation() {        price = 0;        num = 0;        for (int i = 0; i < cartInfo.getData().size(); i++) {            for (int j = 0; j < cartInfo.getData().get(i).getItems().size(); j++) {                if (cartInfo.getData().get(i).getItems().get(j).ischeck()) {                    price += Double.valueOf((cartInfo.getData().get(i).getItems().get(j).getNum() * Double.valueOf(cartInfo.getData().get(i).getItems().get(j).getPrice())));                    num++;                } else {                    checkBox.setChecked(false);                }            }        }        if (price == 0.0) {            cartNum.setText("共0件商品");            cartMoney.setText("¥ 0.0");            return;        }        try {            String money = String.valueOf(price);            cartNum.setText("共" + num + "件商品");            if (money.substring(money.indexOf("."), money.length()).length() > 2) {                cartMoney.setText("¥ " + money.substring(0, (money.indexOf(".") + 3)));                return;            }            cartMoney.setText("¥ " + money.substring(0, (money.indexOf(".") + 2)));        } catch (Exception e) {            e.printStackTrace();        }    }    private void showData() {        cartInfo = JSON.parseObject(JSONDATA(), CartInfo.class);    }    private class OnClickListener implements View.OnClickListener {        @Override        public void onClick(View v) {            switch (v.getId()) {                //全选和不全选                case R.id.cbx_quanx_check:                    if (checkBox.isChecked()) {                        int length = cartInfo.getData().size();                        for (int i = 0; i < length; i++) {                            cartInfo.getData().get(i).setIscheck(true);                            int lengthn = cartInfo.getData().get(i).getItems().size();                            for (int j = 0; j < lengthn; j++) {                                cartInfo.getData().get(i).getItems().get(j).setIscheck(true);                            }                        }                    } else {                        int length = cartInfo.getData().size();                        for (int i = 0; i < length; i++) {                            cartInfo.getData().get(i).setIscheck(false);                            int lengthn = cartInfo.getData().get(i).getItems().size();                            for (int j = 0; j < lengthn; j++) {                                cartInfo.getData().get(i).getItems().get(j).setIscheck(false);                            }                        }                    }                    cartAdapter.notifyDataSetChanged();                    showCommodityCalculation();                    break;                case R.id.btn_delete:                    //删除选中商品                    cartAdapter.removeChecked();                    showCommodityCalculation();                    break;                case R.id.cart_shopp_moular:                    Toast.makeText(MainActivity.this,"提交订单:  "+cartMoney.getText().toString()+"元",Toast.LENGTH_LONG).show();                    break;            }        }}

这是我写的第二个购物车,基本的功能都有了的。

有需要的小伙们,可以参考一下。

 

代码下载:

转载于:https://my.oschina.net/zhangqie/blog/2908881

你可能感兴趣的文章
Java IO最详解
查看>>
关于错误error C4430 error C2365 error C2078 error C2440 error C2143的处理。
查看>>
用python写一个抽奖程序
查看>>
npm使用入门(package.json)
查看>>
You are beautiful
查看>>
inline和宏之间的区别
查看>>
hibernate篇章五--Hibernage工作原理
查看>>
MongodDB学习笔记(二)(复制)
查看>>
oracle在线迁移同步数据,数据库报错
查看>>
Java中1.0 / 0.0 会输出什么?
查看>>
linux性能剖析工具
查看>>
DP ZOJ 3872 Beauty of Array
查看>>
jQuery Ajax实例 ($.ajax_$.post_$.get)
查看>>
垃圾桶丁
查看>>
HDU 4757 可持久化trie树
查看>>
spring-boot入门
查看>>
USB HID 分析
查看>>
驱动属性
查看>>
IOS 学习笔记(6) 控件 文本域(UITextField)的使用方法
查看>>
第一次写JQuery插件--用于显示子菜单
查看>>