在Android中使用EditText上的TextWatcher实时计算总计和总和?

2024-02-09

在这里,我想采用来自我的数据库的默认值,并将 Text 设置为该值并计算净费率和总计,否则如果用户编辑费率或收取费用,我想根据该值计算净费率和总计即时的。

这是我用于计算和显示值的代码。

    private void showItem(String json) {
    String itembarcode = "";
    String itemdesc = "";
    String weight = "";
    String rate = "";
    String making = "";

    double wt = 0.0d;
    double rt = 0.0d;
    double mk = 0.0d;

    try {
        JSONObject jsonObject = new JSONObject(json);
        JSONArray result = jsonObject.getJSONArray(ParseBarcode.JSON_ARRAY);
        JSONObject itemData = result.getJSONObject(0);
        itembarcode = itemData.getString(ParseBarcode.KEY_BARCODE);
        itemdesc = itemData.getString(ParseBarcode.KEY_DESC);
        weight = itemData.getString(ParseBarcode.KEY_WEIGHT);
        rate = itemData.getString(ParseBarcode.KEY_RATE);
        making = itemData.getString(ParseBarcode.KEY_MAKING);
    } catch (JSONException e) {
        e.printStackTrace();
    }

    //table started

    TableLayout.LayoutParams tableParams = new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT);
    TableRow.LayoutParams rowParams = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 1f);
    rowParams.setMargins(16, 0, 16, 0);

    TableLayout tableLayout = new TableLayout(AddInvEst.this);
    tableLayout.setLayoutParams(tableParams);

    TableRow newRow = new TableRow(AddInvEst.this);
    newRow.setLayoutParams(tableParams);

    TextView barCode = new TextView(AddInvEst.this);
    barCode.setLayoutParams(rowParams);
    barCode.setGravity(Gravity.CENTER);

    TextView itemDesc = new TextView(AddInvEst.this);
    itemDesc.setLayoutParams(rowParams);
    itemDesc.setGravity(Gravity.CENTER);

    TextView weightLine = new TextView(AddInvEst.this);
    weightLine.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 0.75f));
    weightLine.setGravity(Gravity.CENTER);

    EditText rateAmount = new EditText(AddInvEst.this);
    rateAmount.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 0.5f));
    rateAmount.setGravity(Gravity.CENTER);
   // String rtAmt = rateAmount.getText().toString().trim();

    EditText makingAmount = new EditText(AddInvEst.this);
    makingAmount.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 0.5f));
    makingAmount.setGravity(Gravity.CENTER);
    //String mkAmt = makingAmount.getText().toString().trim();

    TextView netRate = new TextView(AddInvEst.this);
    netRate.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 0.5f));
    netRate.setGravity(Gravity.CENTER);

    TextView itemtotal = new TextView(AddInvEst.this);
    itemtotal.setLayoutParams(rowParams);
    itemtotal.setGravity(Gravity.CENTER);

    wt = Double.parseDouble(weight);
    rt = Double.parseDouble(rate);
    mk = Double.parseDouble(making);

    double NetRate = rt + mk;
    double Total = (NetRate / 10) * wt;


    barCode.setText(itembarcode);
    itemDesc.setText(itemdesc);
    weightLine.setText(weight);
    rateAmount.setText(rate);
    makingAmount.setText(making);
    netRate.setText(NetRate + "");
    itemtotal.setText(Total + "");

    newRow.addView(barCode);
    newRow.addView(itemDesc);
    newRow.addView(weightLine);
    newRow.addView(rateAmount);
    newRow.addView(makingAmount);
    newRow.addView(netRate);
    newRow.addView(itemtotal);
    itemTable.addView(newRow);


}

使用此代码,我可以计算净费率和总计,但我想将双精度值四舍五入到小数点后 4 位。另外,我如何实时计算所有总计的总和。感谢任何帮助。提前致谢。 这是我的 xml 代码。


下面不是完整的代码,但这将给出实现的想法。 您必须创建一种新的计算和显示结果的方法 -

private void calculateAndShow(long wt, long rt, long mk){
        double NetRate = rt + mk;
        double Total = (NetRate / 10) * wt;

        // Change the value here
        barCode.setText(itembarcode);
        itemDesc.setText(itemdesc);
        weightLine.setText(weight);
        rateAmount.setText(rate);
        makingAmount.setText(making);
        netRate.setText(NetRate + "");
        itemtotal.setText(Total + "");

    }

现在将这些行添加到您的方法之外 -

 private TextWatcher rateTextWatcher = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            String rate = rateAmount.getText().toString();
            newRate = Double.parseDouble(rate);
            calculateAndShow(wt, newRate, mk);
        }
    };

    private TextWatcher makingAmountTextWatcher = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            String makingAmount = makingAmount.getText().toString();
            newMK = Double.parseDouble(makingAmount);
            calculateAndShow(wt, rt, newMK);
        }
    };

这些文本观察器对您的编辑文本如下所示 -

EditText rateAmount = new EditText(AddInvEst.this);
        rateAmount.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 0.5f));
        rateAmount.setGravity(Gravity.CENTER);
        rateAmount.addTextChangedListener(rateTextWatcher);


 EditText makingAmount = new EditText(AddInvEst.this);
        makingAmount.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 0.5f));
        makingAmount.setGravity(Gravity.CENTER);
        makingAmount.addTextChangedListener(makingAmountTextWatcher);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Android中使用EditText上的TextWatcher实时计算总计和总和? 的相关文章

随机推荐

  • DataGridComboBoxColumn 数据绑定

    我正在尝试数据绑定DataGridComboBoxColumn
  • 在 Java 中查找不可序列化字段的好方法

    我有一个相当复杂的 Java 对象需要序列化 几周前运行良好 在同时实现了很多之后 序列化现在失败并抛出以下异常 java io NotSerializableException sun java2d SunGraphics2D 我检查了所
  • 在自然断点处分割字符串

    在渲染标题时 使用 reportlab 如果标题长度超过 45 个字符 我想将其拆分为两行 到目前为止我有这个 if len Title lt 45 drawString 200 695 Title else drawString 200
  • UIManagedDocument 中核心数据对象的状态保存和恢复策略

    我开始尝试向我的 iOS 应用程序添加对状态保存和恢复的支持 该应用程序有一个核心数据组件 我可以通过 UIManagedDocument 访问该组件 我开始将恢复标识符添加到我的视图控制器中 并在我的 AppDelegate 和控制器中连
  • 完成处理程序 swift 3 从函数返回一个变量

    我对 swift 3 中完成处理程序的语法感到困惑 在下面的函数中 解析后xml来自 Web 服务调用的文件 它应该返回一个变量 array String String 我的尝试如下 但显然这是不正确的 enum HistoryKey ca
  • header("Location: ...) 之后的代码是否执行?

    SESSION some value 4 header Location another file php SESSION some value 5 有什么价值 SESSION some value 值为 5 您可以输出更多的标头 而不仅仅
  • 从 python 中的 for 循环返回值

    我试图找出在 for 循环语法中将参数从一个列表或字典传递到另一个列表或字典的语法 我正在寻找的期望结果是这样的 for bean in beans if bean type coffee print bean 只是 我不想打印到标准输出
  • 在java中将图像作为文本发送

    是否可以将图像读取为文本并通过网络发送 是的 那么我们该怎么做呢 您可以对图像进行 Base64 编码以生成 文本 字符串 Apache Commons Codec 有 Base64 实现 http commons apache org c
  • 更新到23.3.0后Android支持库错误

    我一直在使用 android support v4 23 1 1 最近尝试将其更新到 23 3 0 被问及时的最新版本 但出现以下错误 错误 与依赖项 com android support support annotations 冲突 应
  • 在后台检测 python 中的按键

    我正在尝试找到一种方法来检测按键 然后根据按键运行一个方法 我已经可以使用 Tkinter 做到这一点 但我不能做的是在窗口处于后台时检测按键 当我玩游戏时 我将在后台运行这个程序 我需要它能够在我玩游戏时检测输入 有什么办法可以用 Tki
  • QtDbus 无法在 Windows 7 上的 Qt5.4.1 中工作

    当我运行 Qt Creator dbus 示例时 它们无法运行 是否有任何用于工作 QtDbus 模块的设置或内容或任何先决条件 例如在chat项目 if QDBusConnection sessionBus isConnected qWa
  • 使用实体框架连接多个表

    我正在尝试使用 EF 连接 3 个表 但它会抛出错误 consider swaping conditions on either side of equals 请有人帮忙吗 var billdata from billtotal in co
  • 如何将 favicon 与 ember-cli 一起使用?

    我的索引模板上有一个图标工作了一段时间 但没有任何其他模板 现在甚至我的索引模板也不会显示它 我刚刚处于开发阶段 所以我正在使用ember server 索引 html 只需四处看看我的图标 看看它是否出现在任何地方 我现在将它放在以下位置
  • 传递 kwargs 列表?

    为了简洁起见 我可以将 kwargs 列表传递给方法吗 这就是我正在尝试做的事情 def method kwargs do something keywords keyword1 foo keyword2 bar method keywor
  • 网站与自有API之间的认证

    以前可能有人问过这个问题 所以我先致歉 我建立了一个网站并建立了一个 API 该 API 将来也将被移动应用程序使用 我两者都拥有 所以我很确定两条腿和三条腿的 OAuth 不适合我 API 的部分内容可供全世界访问 而其他部分则受到保护并
  • 简单的 Python Pandas EMA (ewma)?

    我编写了一些代码来构建自己的 EMA MACD 但决定尝试一下 Pandas 我使用下面这个网站作为对 EMA 的基本了解 并尝试让 pandas 给我相同的答案 以确保我正确使用 pandas http stockcharts com s
  • 为什么我需要一个用于自动连接/注入字段的设置器?

    我有一颗豆子
  • 解决静态断言中的不完整类型

    当表达式取决于类类型本身时 有没有办法在类内部进行 static assert 也许延迟评估直到类型完成或模板实例化之后 示例代码 include
  • cURL - 构造请求以验证服务器发送的事件

    我是 cURL 和服务器发送事件的新手 我知道如何构建一个简单的GET POST使用 cURL 请求并获取响应 另外 理论上我知道服务器发送的事件是通过创建事件源侦听器来处理的 但我不确定如何继续使用 cURL 验证任何此类 API 任何指
  • 在Android中使用EditText上的TextWatcher实时计算总计和总和?

    在这里 我想采用来自我的数据库的默认值 并将 Text 设置为该值并计算净费率和总计 否则如果用户编辑费率或收取费用 我想根据该值计算净费率和总计即时的 这是我用于计算和显示值的代码 private void showItem String