で保持されている値の簡単なページ付けルーチンを作成しようとしていますArrayList
。基本的に私がやりたいのは、最初に最初の5つの要素をレンダリングするArrayList
ことです。そして、ユーザーがとをクリックするNext (increment by another 5)
とPrevious (decrease by 5)
。
私のロジックは次のようになります。
class foo
{
private static final int defaultStep = 5;
private int moveCounter;
private List<String> values;
public foo()
{
values = new ArrayList<String>();
values.add("Fiber Channel");
values.add("Copper Channel");
...
}
private void pageNext()
{
if (moveCounter > -1 && moveCounter < values.size())
{
int currentIndex = (moveCounter + 1);
renderValues(currentIndex, false);
}
}
private void pagePrevious()
{
if (moveCounter > -1 && moveCounter <= values.size())
{
renderValues(moveCounter-1, true);
}
}
private void renderValues(int startIndex, boolean isPreviousCall)
{
if (startIndex > -1)
{
StringBuilder html = new StringBuilder();
List<String> valuesToRender = new ArrayList<String>();
int checkSteps = 1;
while (startIndex < values.size())
{
valuesToRender.add(values.get(startIndex));
if (checkSteps == defaultStep) break;
startIndex++;
checkSteps++;
}
moveCounter = startIndex;
//TODO: Build html String
...
}
}
}
呼び出しに問題があります。配列にレンダリングする値を追加する前に、5つのステップpagePrevious
を構築するのを手伝ってもらえますか。valuesToRender
values array
valuesToRender
私もこのようなことをしてみました:
for (int start = startIndex, end = values.size() - 1; start < end; start++, end--)
{
if (isPreviousCall) valuesToRender.add(values.get(end));
else valuesToRender.add(values.get(start));
if (checkSteps == defaultStep) break;
checkSteps++;
}
しかし、これもうまくいかないようです。この問題を見つけて修正するのを手伝ってくれませんか。みんなありがとう。