[英]ArrayList not working as expected in do..while loop
我有以下循环创建一个完全适合屏幕的字符串,可以说创建了一个页面。
for (int i = 0; i < totalLine; i++) {
temp = enterLine(mTextView, textToBeShown, i);
full = full + temp;
}
因此,在完成迭代后, full
将占据一页。
我想做的是创建一个外部迭代,该迭代使我可以创建多个页面,但未定义要创建的页面数量。 因此,如果没有更多页面要创建,则迭代必须停止。
我尝试了以下代码,但是由于某些原因,在调用页面Pages.get(1)
它给出了整个String而不只是full
/ Page。 例如,如果我三根弦都被添加到ArrayList
页面会出现在三根弦ArrayList
,但都具有相同的价值。
通过Log
一些测试,我知道第一次迭代运行良好,并且full
给出了期望值,这意味着在第一次do
迭代中给出了期望值到full
,而第二次迭代等等。
do{
for (int i = 0; i < totalLine; i++) {
temp = enterLine(mTextView, textToBeShown, i);
if(temp.trim().length() == 0){
break;
}else{
full = full + temp;
}
}
Pages.add(full);
所以问题是我在ArrayList
做错了什么,为什么它不能按我期望的那样工作。
编辑
这是enterLine
代码:使用了更多Log
并不需要全部显示它们。
public String enterLine(TextView mTextView, String textBeShown, int i){
String A;
int number = mTextView.getPaint().breakText(textToBeShown, 0, textToBeShown.length(),true,mTextView.getWidth(), null);
if(textToBeShown.substring(number-1,number) != " "){
number = textToBeShown.substring(0,number).lastIndexOf(" ");
Log.e("TAG1", "Found " + i);
}
A = (textToBeShown.substring(0, number) + "\n");
Log.e(TAG, textToBeShown.substring(0, number));
textToBeShown = textToBeShown.substring(number, textToBeShown.length());
return A;
}
从外观上看,它不是您的arraylist,而是您的循环。 Add将一个元素添加到arraylist,get(index)从列表中获取第index个元素。 没问题。
您的问题是它在循环后将完整内容添加到页面中,到此为止,完整内容已包含所有内容。 将pages.add放入循环中,它将得到修复。 确保您在每次迭代时都将其重置为完整状态。 在循环的开始处放入full =“”。 那应该工作。
do{
full=""
for (int i = 0; i < totalLine; i++) {
temp = enterLine(mTextView, textToBeShown, i);
if(temp.trim().length() == 0){
break;
}else{
full = full + temp;
}
}
Pages.add(full);
}while(...)
或更好
do{
StringBuilder builder = new StringBuilder();
for (int i = 0; i < totalLine; i++) {
temp = enterLine(mTextView, textToBeShown, i));
if(temp.trim().length() == 0){
break;
}else{
builder.append(temp);
}
}
Pages.add(builder.toString());
}while(...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.