Android TextView通过循环添加文本

时间:2014-01-08 06:01:53

标签: android textview

我在文本视图中显示值时遇到问题。它仅显示文本视图中的最后一个值。我想迭代新行中的每个值。

这是我的代码。

PreviewCatNameTxt = new TextView[obdatin.catCount];
        PreviewNameTxt = new TextView[10];
        PreviewQtyTxt = new TextView[10];
        PreviewAmtTxt = new TextView[10];
        System.out.println("setview3");
        for(int i=0;i<obdatin.catCount;i++){ 
            System.out.println("num oof prca"+obdatin.catList[i].getNumCategory());
            if(obdatin.catList[i].isTotQtyNonZero(0)){
                PreviewCatNameTxt[i] = (TextView) findViewById(R.id.textViewh);

                PreviewCatNameTxt[i].setText(obdatin.catList[i].getCategoryName(0));
                System.out.println("prca"+obdatin.catList[i].getCategoryName(0));
            }
            int cnt =obdatin.catList[i].proList.getNumProduct();
        System.out.println("setview3");

        for(int j = 0; j<cnt; j++) {

            if(obdatin.catList[i].proList.isQtyNonZero(j)){

                PreviewNameTxt[j] = (TextView)findViewById(R.id.textView1);
                PreviewNameTxt[j].setText(obdatin.catList[i].proList.getProductName(j));

                PreviewQtyTxt[j] = (TextView)findViewById(R.id.textView2);

                PreviewQtyTxt[j].setText(obdatin.catList[i].proList.getProductQty(j));

                PreviewAmtTxt[j] = (TextView)findViewById(R.id.textView3);
                String amt = obdatin.catList[i].proList.getProductAmt(j);
                PreviewAmtTxt[j].setText(amt);
                System.out.println("prcaN"+obdatin.catList[i].proList.getProductName(j));
                System.out.println("prcaQ"+obdatin.catList[i].proList.getProductQty(j));
                System.out.println("prcaA"+obdatin.catList[i].proList.getProductAmt(j));
             }

        }

4 个答案:

答案 0 :(得分:2)

根据您的要求编辑代码

PreviewCatNameTxt = (TextView) findViewById(R.id.textViewh);


for(int i=0;i<obdatin.catCount;i++){ 
            System.out.println("num oof prca"+obdatin.catList[i].getNumCategory());
            if(obdatin.catList[i].isTotQtyNonZero(0)){


                PreviewCatNameTxt.append(" "+obdatin.catList[i].getCategoryName(0));
                System.out.println("prca"+obdatin.catList[i].getCategoryName(0));
            }
            int cnt =obdatin.catList[i].proList.getNumProduct();
        System.out.println("setview3");

        for(int j = 0; j<cnt; j++) {

            if(obdatin.catList[i].proList.isQtyNonZero(j)){


                   PreviewCatNameTxt.append("\n"+obdatin.catList[i].proList.getProductName(j));

                PreviewCatNameTxt.append("\n"obdatin.catList[i].proList.getProductQty(j));

                String amt = obdatin.catList[i].proList.getProductAmt(j);
                PreviewCatNameTxt.append("\n"+amt+"\n\n");
                System.out.println("prcaN"+obdatin.catList[i].proList.getProductName(j));
                System.out.println("prcaQ"+obdatin.catList[i].proList.getProductQty(j));
                System.out.println("prcaA"+obdatin.catList[i].proList.getProductAmt(j));
             }

请删除TextView数组以及所有这些内容。请回复您的反馈。

答案 1 :(得分:1)

我不完全确定你要做什么。你为什么使用 System.out.println

如果我做得对,你需要在每个for循环之后将更大的文本放入TextView中以换行符分隔。一种方法是在每次迭代时填充一个String,在每次迭代后和在设置文本后添加换行符。

所以,你可以这样:

String catList="";
for(int i=0;i<obdatin.catCount;i++){
        if(obdatin.catList[i].isTotQtyNonZero(0)){
        catList = catList + obdatin.catList[i].getCategoryName(0) + "\n";
        }
int cnt =obdatin.catList[i].proList.getNumProduct();

PreviewCatNameTxt[i] = (TextView) findViewById(R.id.textViewh);
PreviewCatNameTxt[i].setText(catList);

另外,如果你想记录一些你应该使用LogCat的东西。您可以在LogCat herehere中阅读有关阅读和写作的内容。 祝你好运!

答案 2 :(得分:1)

PreviewNameTxt[j] = (TextView)findViewById(R.id.textView1);
PreviewQtyTxt[j] = (TextView)findViewById(R.id.textView2);
PreviewAmtTxt[j] = (TextView)findViewById(R.id.textView3);
String cat="",obtaincat="",amt="";

for(int j = 0; j<cnt; j++) {

            if(obdatin.catList[i].proList.isQtyNonZero(j)){

                cat = cat + obdatin.catList[i].getCategoryName(j) + "\n";
                obtaincat=btaincat+obdatin.catList[i].proList.getProductQty(j)+"\n";
               amt =amt+ obdatin.catList[i].proList.getProductAmt(j)+"\n";
             }
}
PreviewNameTxt[j].setText(cat);
PreviewQtyTxt[j].setText(obtaincat);
PreviewAmtTxt[j].setText(amt);

答案 3 :(得分:-1)

更改为Logcat:

Log.w("","prcaN"+obdatin.catList[i].proList.getProductName(j));
Log.w("","prcaQ"+obdatin.catList[i].proList.getProductQty(j));
Log.w("","prcaA"+obdatin.catList[i].proList.getProductAmt(j));