我有以下循环,它创建了一个完全适合屏幕的字符串,可以说它创建了一个页面。
for (int i = 0; i < totalLine; i++) {
temp = enterLine(mTextView, textToBeShown, i);
full = full + temp;
}
所以在迭代完成后full
保留一页。
我想要做的是创建一个外部迭代,它允许我创建多个页面,要创建的页面数量没有定义。因此,如果没有更多页面要创建,则需要停止迭代。
我尝试了以下代码,但由于某种原因,在调用页面时Pages.get(1)
它会给出整个字符串,而不仅仅是full
/ 页面。例如,如果 i 三个字符串已添加到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
代码: MoreLog
的使用感觉不需要全部显示。
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;
}