ArrayList
に保持されている値の単純なページネーションルーチンを作成しようとしています。基本的に私がしたいのは、先にArrayList
の最初の5つの要素をレンダリングすることです。ユーザーがNext (increment by another 5)
とPrevious (decrease by 5)
をクリックしたとき。ArrayListを改ページする
私のロジックは次のようになります。私はpagePrevious
コールに問題がある
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
...
}
}
}
、君たちは私がvaluesToRender
配列にレンダリングするために値を追加する前にvalues array
アップvaluesToRender
5ステップを構築を支援することができます。
また、私はこのような何かをやってみました:
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++;
}
をしかし、これはどちらも動作するようですしません。あなたはこの問題を見つけて助けてくれますか? ありがとうございます。
はこれを確認してください。それはあなたを助けるかもしれません - http://stackoverflow.com/questions/8755619/java-arraylist-navigation –