Android For循环运行两倍于结果?

Android For循环运行两倍于结果?,android,sqlite,pos,Android,Sqlite,Pos,我是Android新手。我正在创建一个本地的MobilePOS Android应用程序,通过蓝牙打印。这是我的代码: private void showandadd() { /*String num=""; num=num+String.valueOf(number);*/ String string1=""; String string2=""; String string3=""; if(nu

我是Android新手。我正在创建一个本地的MobilePOS Android应用程序,通过蓝牙打印。这是我的代码:

private void showandadd() {
        /*String num="";
        num=num+String.valueOf(number);*/
        String string1="";
        String string2="";
        String string3="";


        if(num==""){
            Toast.makeText(this,"Wrong input!! try again", Toast.LENGTH_LONG).show();
        }
        if(flag==1) {
            getItem(directadd);
            if(blankflag!=1) {
                int updatedPrice = Integer.parseInt(this.price);
                int data = Integer.parseInt(this.num);
                if(data==0){
                    Toast.makeText(this,"Wrong input!! insert different quantity number", Toast.LENGTH_LONG).show();
                }else {
                    int d = updatedPrice * data;
                    this.price = d + "";

                    // String str = itemName + "      \t" + num + " No" + "      \t" + "Rs " + price;
                    printdetailsnew.add(itemName);
                    quantitynum.add(num);
                    amount.add(price);
                    num = "";
                    directadd = "";
                    flag = 0;
                    blankflag = 0;
                }
            }
            num = "";
            directadd = "";
            flag = 0;
            blankflag = 0;

        }else {
            getItem(directadd);
            if(blankflag!=1) {
                //String str = itemName + "      \t" + num + " No" + "      \t" + "Rs " + price;
                printdetailsnew.add(itemName);
                quantitynum.add("1");
                amount.add(price);
                num = "";
            }
            directadd="";
            blankflag=0;
        }
        for(int i=0;i<printdetailsnew.size();i++){
            string1=string1+ printdetailsnew.get(i)+"\t"+"\n";
            string2=string2 +"No."+ quantitynum.get(i)+"\t"+"\n";
            string3= string3 + amount.get(i)+"\n";

            result = printdetailsnew.get(i)+"\t" + "No."+ quantitynum.get(i)+"\t"+ amount.get(i)+"\n";

            System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"+result);


        }

        this.selection.setText(string1);
        this.selection2.setText(string2);
        this.selection3.setText(string3);
        num="";
    }
我想知道结果

Tea 1qty 10rs
Coffee 1qty 12rs

像这样…请任何人都能帮助我

一个简单的例子就是每次添加新项目时使用一个标签并附加到标签上

与此相反:

for(int i=0;i<printdetailsnew.size();i++){
        string1=string1+ printdetailsnew.get(i)+"\t"+"\n";
        string2=string2 +"No."+ quantitynum.get(i)+"\t"+"\n";
        string3= string3 + amount.get(i)+"\n";

        result = printdetailsnew.get(i)+"\t" + "No."+ quantitynum.get(i)+"\t"+ amount.get(i)+"\n";

        System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"+result);


    }

    this.selection.setText(string1);
    this.selection2.setText(string2);
    this.selection3.setText(string3);
    num="";

您确定数据没有两次添加到列表中吗?您的问题是,每次添加新项目时,您都会遍历您添加的所有项目。您希望确保每个标签只循环一个项目。至少这是我从你们努力实现的目标中理解的。为什么有3个字符串和3个标签?如果您正在制作POS系统,您可能希望动态生成您创建的标签数量,或者每次添加新项目时仅使用一个标签并添加新行。如果您能确认这是您想要实现的,我可以尝试向您展示一个示例。好的..任何示例都有。?我正在发送打印活动结果将类似于上述格式这可以在内部for循环或外部for循环中使用…?您不需要for循环,因为我知道每次添加项目时都会调用您的方法。此代码将自动获取上一个字符串,其中包含当前项,并将其附加到该字符串中。好的..但是如何解析此活动的str以打印活动。。。有一件事你告诉我不需要循环..我可以得到(i)吗..好的..但是我如何解析这个活动的str来打印活动。。。有一件事你告诉我不需要循环..我能得到什么(i)…str+=printdetailsnew.get(i)+“\t”+“no.”+quantitynum.get(i)+“\t”+amount.get(i)+“\n”;我不是100%确定你想做什么。但是,如果您试图创建一种方法来将项目添加到POS购物篮中,那么您不需要为此进行循环。通常,您会创建一个数组,并将所有POS项目存储在其中(您可以使其多维化,以存储带有名称的price等内容)。然后,当您添加一个项目时,您的方法将简单地附加该列表,然后它可以附加GUI标签,或者在整个数组中运行循环以完全重新绘制标签。
for(int i=0;i<printdetailsnew.size();i++){
        string1=string1+ printdetailsnew.get(i)+"\t"+"\n";
        string2=string2 +"No."+ quantitynum.get(i)+"\t"+"\n";
        string3= string3 + amount.get(i)+"\n";

        result = printdetailsnew.get(i)+"\t" + "No."+ quantitynum.get(i)+"\t"+ amount.get(i)+"\n";

        System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"+result);


    }

    this.selection.setText(string1);
    this.selection2.setText(string2);
    this.selection3.setText(string3);
    num="";
str = this.selection.getText().toString();
str += printdetailsnew.get(i)+"\t" + "No."+ quantitynum.get(i)+"\t"+ amount.get(i)+"\n";

this.selection.setText(str);
num="";