我在文本视图中显示值时遇到问题。它仅显示文本视图中的最后一个值。我想迭代新行中的每个值。
这是我的代码。
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)
根据您的要求编辑代码
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 here和here中阅读有关阅读和写作的内容。 祝你好运!
答案 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));