是否可以使用listView中的数字进行计算?

时间:2016-12-22 12:07:29

标签: java android alertdialog

我正致力于ShoppingList项目,该项目包含有关项目数量及其价格的信息。问题是我将它们全部保存到一个阵列购物清单<>中。所以现在当我使用AlertDialog构建器和输入时,例如: 1件。香蕉25欧元。

我无法达到价格,我需要计算产品的最终价格。

AlertDialog信息:

enter image description here

到目前为止看起来如何:

enter image description here

这是处理价格金额的代码:

if (id == R.id.action_add)
    {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Fill out the fields");
        final EditText amount = new EditText(this);
        final EditText Item = new EditText(this);
        final EditText price = new EditText(this);
        amount.setHint("Input amount..");
        Item.setHint("Input item.. ");
        price.setHint("Input price.. ");
        LinearLayout layout = new LinearLayout(getApplicationContext());
        layout.setOrientation(LinearLayout.VERTICAL);
        amount.setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED);
        price.setRawInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED);
        layout.addView(amount);
        layout.addView(Item);
        layout.addView(price);
        builder.setView(layout);
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

                shoppingList.add("   " + amount.getText()+ " pc. " + "     "+Item.getText().toString()+ "     " + price.getText().toString() + " Dkk");
                Collections.sort(shoppingList);
                storeArrayVal(shoppingList, getApplicationContext());

                lv.setAdapter(adapter);
            }
        });
        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });
        builder.show();
        return true;

    }

在下面,我正在尝试制作和功能,应该总结所有输入量。这就是我到目前为止所拥有的

if(id == R.id.action_sum)         {

        Context context = getApplicationContext();
        CharSequence text = "Total amount here";
        int duration = Toast.LENGTH_SHORT;
        Toast toast = Toast.makeText(context, text, duration);
        toast.show();



    }

2 个答案:

答案 0 :(得分:0)

如果您的意思是希望用户输入多个金额,并且您获得了总金额,那么您必须:

  1. 在if语句中添加类似int total = 0;的变量,或者如果toast代码已经输出,则输出if语句
  2. 在onClick对话框中,您将会说total = total + total;
  3. 最后在Toast代码Toast toast = Toast.makeText(context, total, duration);
  4. 编辑:

    删除后过滤列表需要2个代码语句

    1. xItem = xItem.replaceFirst("\\d", "");用于删除第一个整数(列表中的金额)
    2. xItem = xItem.replaceAll("[\\D]", "");这是为了删除金额之后的所有字符,因此只能获得价格
    3. 这一切,但我的建议是在保存之前捕获数据并使用它不保存它然后读取和过滤它然后使用它

      <强>资源 Removing whitespace from strings in Java Question以及更多搜索搜索结果

      String test = "1 banana 25";
          test = test.replaceFirst("\\d", "");
          test = test.replaceAll("[\\D]","");
          int num = Integer.parseInt(test);
          Log.i("test", "--" + String.valueOf(num));
      

      这是一个简单的想法,我测试了它的工作与否,其中num是你想要的总和价格的总和,它的效果非常好,以防万一你的代码不能正常工作代码所以我需要整个代码一起编译

      错误的代码:

      首先,toast不能将第二个参数表示为int,而ID资源表示this讨论说

      所以我们将使用String.valueOf(PriceTotal) 那么R.id.actionsum中的总代码将是: -

      int PriceTotal = 0;
              for(String totalString : shoppingList){
                  totalString = totalString.replaceFirst("\\d", "");
                  totalString = totalString.replaceAll("[\\D]","");
                  PriceTotal += Integer.parseInt(totalString);
              }
      
              Log.i("test Price =", String.valueOf(PriceTotal)); // delete it thats is for testing you can use it in app to test reslts 
      
              /*Context context = getApplicationContext();
              int duration = Toast.LENGTH_SHORT;
              Toast toast = Toast.makeText(context,PriceTotal, duration);
              toast.show();*/
              Toast.makeText(this, String.valueOf(PriceTotal), Toast.LENGTH_LONG).show();  //thats is simpler it you want
      

答案 1 :(得分:0)

按空格字符拆分string。如果您不知道该怎么做,请阅读this。拆分将为您提供包含3个元素的字符串数组。

string[0]是您的商品数量,string[1]是名称,string[2]是价格。

string = "1 banana 25"将拆分为:

string[0] = 1, string[1] = banana, string[2] = 25

integers投放到integers,您就完成了。

但你可以找到更好的方法。