当前位置: 首页 > article >正文

在Android应用中实现条形码扫描与购物车功能

在现代零售与库存管理系统中,条形码扫描技术已经成为不可或缺的一部分。它不仅提高了数据录入的准确性,还大大加快了操作速度。本文将介绍如何在Android应用中集成条形码扫描功能,并将扫描到的商品添加到购物车中。

首先,我们需要处理从条形码扫描器返回的结果。在Android中,这通常通过onActivityResult方法实现。该方法在启动的活动(Activity)完成并返回结果时被调用。下面是一个示例代码,展示了如何处理条形码扫描的结果:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == SCANNER_REQUEST_CODE && resultCode == RESULT_OK && data != null) {
        String scannedValue = data.getStringExtra("SCANNED_VALUE");
        if (scannedValue != null) {
            addScannedItemToCart(scannedValue);
        }
    }
}

在上面的代码中,SCANNER_REQUEST_CODE是一个用于标识条形码扫描请求的整型常量。当resultCode为RESULT_OK且data不为空时,我们从Intent中获取名为"SCANNED_VALUE"的额外数据,这通常是扫描到的条形码值。如果扫描值不为空,我们调用addScannedItemToCart方法,将扫描到的商品添加到购物车。

addScannedItemToCart方法的具体实现如下:

private void addScannedItemToCart(String barcode) {
    final SQLiteDatabase db = openOrCreateDatabase("stockpilerDB", Context.MODE_PRIVATE, null);
    try {
        String id = barcode.trim().toUpperCase();
        Cursor c = db.rawQuery("SELECT * FROM inventory WHERE id='" + id + "';", null);
        if (c.moveToFirst()) {
            String itemName = c.getString(1);
            double sellingPrice = c.getDouble(6);
            int newQuantity = 1;

            Cursor cartCursor = db.rawQuery("SELECT quantity FROM cart WHERE id='" + id + "';", null);
            if (cartCursor.moveToFirst()) {
                newQuantity = cartCursor.getInt(0) + 1;
            }
            cartCursor.close();

            double totalAmount = sellingPrice * newQuantity;
            ContentValues cv = new ContentValues();
            cv.put("id", id);
            cv.put("itemname", itemName);
            cv.put("quantity", newQuantity);
            cv.put("sellingprice", sellingPrice);
            cv.put("totalamt", totalAmount);

            if (cartCursor.moveToFirst()) {
                db.update("cart", cv, "id=?", new String[]{id});
            } else {
                db.insert("cart", null, cv);
            }

            Toast.makeText(this, "产品已添加到购物车", Toast.LENGTH_SHORT).show();
            updateCartView();
        } else {
            Toast.makeText(this, "产品不可用", Toast.LENGTH_SHORT).show();
        }
        c.close();
    } catch (Exception e) {
        Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
    }
}

在这个方法中,我们首先使用条形码值作为ID,从SQLite数据库stockpilerDB的inventory表中查询商品信息。如果找到了对应的商品,我们获取其名称、销售价格,并初始化数量为1。接着,我们检查购物车中是否已有该商品。如果有,我们将其数量加1;如果没有,我们准备一个新的购物车条目。

计算新数量对应的总金额后,我们使用ContentValues对象来存储更新后的购物车条目信息,并根据购物车中是否已有该商品来决定是更新现有条目还是插入新条目。

最后,我们通过Toast消息通知用户操作结果,并调用updateCartView方法来更新购物车视图,以反映最新的购物车内容。

通过这种方法,我们可以轻松地在Android应用中实现条形码扫描与购物车功能,为用户提供更加便捷和高效的购物体验。


http://www.kler.cn/a/451652.html

相关文章:

  • bypy上传配置
  • IMX芯片启动方式
  • 【C++】模板与泛型编程(一):定义模板,成员模板
  • 第22天:信息收集-Web应用各语言框架安全组件联动系统数据特征人工分析识别项目
  • 模型优化之知识蒸馏
  • 题解 洛谷 Luogu P1135 奇怪的电梯 广度优先搜索 BFS C/C++
  • Linux系统在没有工具软件时如何简单测试串口?
  • Centos7.9安装openldap+phpldapadmin+grafana配置LDAP登录最详细步骤 亲测100%能行
  • 15_HTML5 表单属性 --[HTML5 API 学习之旅]
  • Nginx 常用安全头
  • Linux(Centos 7.6)基本信息查看
  • Flutter:生成二维码
  • 鸿蒙开发使用axios请求后端网络服务出现该错误
  • 利用Python爬虫速卖通按关键字搜索AliExpress商品
  • 自动化 + 人工智能:投标行业的未来是什么样的?
  • SQL Server 数据库更新调用外部HTTP请求
  • react+antd的Table组件编辑单元格
  • uniapp中uni.scss如何引入页面内或生效
  • 【深度学习数学知识】-贝叶斯公式
  • RabbitMQ 路由(Routing)通讯方式详解
  • 金融领域研发效能的特性有哪些?拓展边界是什么?
  • 内网穿透ubuntu20 docker coplar
  • 14_HTML5 input类型 --[HTML5 API 学习之旅]
  • Centos7 安装 zip 软件失败,更换yum 源方法
  • 麒麟信安参展南京软博会,支持信创PC的新一代云桌面及全行业解决方案备受瞩目
  • 一文了解Oracle数据库如何连接(1)