2014-01-08 2 views
3

У меня возникли проблемы с отображением значений в текстовом режиме. Он отображает только последнее значение в текстовом представлении. Я хочу перебирать каждое значение в новой строке.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)); 
      } 

     } 
+0

См. Мой ответ. Я думаю, ваша проблема будет решена. Если у вас есть еще один запрос, спросите меня. –

ответ

2

Edited код согласно вашему требованию

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 массив и все эти вещи. Пожалуйста, ответьте на ваши отзывы.

+0

здесь textview - это массив, как я могу объявить за пределами цикла –

+0

Итак, объявите его внутри, но избегайте setText и добавляйте. Я отредактирую свой ответ в соответствии с вашими потребностями –

+0

, но если вы объявите внутри, он будет каждый раз создавать новое текстовое изображение, поэтому предыдущие данные ID будут пропущены? можете ли вы попробовать использовать мой код? мой код работоспособен? –

1

Я не совсем уверен, что вы пытаетесь do.Why вы используете System.out.println?

Если я правильно понял, вы хотите, чтобы в TextView был добавлен более крупный текст, разделенный символами новой строки после каждого цикла for. Один из способов сделать это - иметь строку, которую вы заполняете с каждой итерацией, а также добавление новой строки после каждой итерации и после установки текста.

Таким образом, вы могли бы что-то вроде этого:

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 here и here. Удачи!

+0

Я хочу показать вывод как в первой строке заголовок следующая строка n число строк снова заголовок и следующая строка n количество строк на самом деле я использовал таблицу, чтобы достичь этого, но я получил неудачу в этом ... поэтому я использовал этот выбор можете ли вы предложить мне какую-то идею? –

-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)); 
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); 
+0

не использует System.out.println(); – Boopathi

Смежные вопросы