画面に正確に収まる文字列を作成する次のループがあり、いわばページを作成します。
for (int i = 0; i < totalLine; i++) {
temp = enterLine(mTextView, textToBeShown, i);
full = full + temp;
}
したがって、反復が完了すると、 full
1 ページが保持されます。
私がやりたいのは、複数のページを作成できる外側の反復を作成することです。作成するページの量は定義されていません。したがって、作成するページがそれ以上ない場合は、反復を停止する必要があります。
次のコードを試してみましたが、何らかの理由でページを呼び出すと、 / ページPages.get(1)
だけでなく文字列全体が出力されます。full
たとえば、3 つの文字列がArrayList
ページに追加された場合、3 つの文字列がページに追加されますArrayList
が、すべて同じ値になります。
を使用したいくつかのテストではLog
、最初の反復がうまく機能していることがわかります。これにより、最初の反復full
で期待値do
が得られ、2 番目の反復でも期待値が得られ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;
}