Пагинация на Яве - PullRequest
       12

Пагинация на Яве

1 голос
/ 18 января 2011

Я написал логику подкачки:

Мое требование: общее количество отображаемых элементов: 100 на странице, если я нажимаю на следующем, должны отображаться следующие 100 записей, если я нажимаю на предыдущие 100 записей.

Начальные переменные значения:

  • showFrom: 1,
  • showTo: 100
  • Макс. Элементы: зависит от размера данных.
  • pageSize: 100.

Код:

if(paging.getAction().equalsIgnoreCase("Next")){
  paging.setTotalRec(availableList.size());
  showFrom = (showTo + 1);
  showTo = showFrom + 100- 1;
  if(showTo >= paging.getTotalRec())
    showTo = paging.getTotalRec();
  paging.setShowFrom(showFrom);
  paging.setShowTo(showTo);
}

else if(paging.getAction().equalsIgnoreCase("Previous")){
  showTo = showFrom - 1;
  showFrom = (showFrom - 100);
  paging.setShowTo(showTo);
  paging.setShowFrom(showFrom);
  paging.setTotalRec(availableList.size());
}

Здесь я могу удалить и добавить элементы к существующему data.above код работает хорошо, если я добавляю и удаляю несколько элементов. Но если я удаляюили добавьте 100 элементов за раз. Счетчики не отображаются должным образом. Код работает нормально, если я добавляю и удаляю несколько элементов.

Ответы [ 2 ]

1 голос
/ 18 января 2011

Что нужно улучшить:

  • заменить "магическое" значение 100 на final int PAGE_SIZE = 100;
  • исключает избыточный код.
  paging.setShowTo(showTo);
  paging.setShowFrom(showFrom);
  paging.setTotalRec(availableList.size());

вне if / else, чтобы сделать вашу логику более понятной

  • Убедитесь, что предыдущий> = 0 и следующий <= количество записей </li>

Редактировать:

final int PAGE_SIZE = 100;
int numberOfPages = -1;
int currentPage = -1;

public void initializeVariables(){
  paging.setTotalRec(availableList.size());
  showFrom = 1; 
  showTo = PAGE_SIZE;
  //keep track of how many pages there should be
  numberOfPages = paging.getTotalRec()/PAGE_SIZE;
  currentPage = 1;
}

public void handlePagingAction(){
  if(paging.getAction().equalsIgnoreCase("Next")){
     if(currentPage < numberOfPages){
        ++currentPage;
     }
  }else if(paging.getAction().equalsIgnoreCase("Previous")){
     if(currentPage > 1){       
       --currentPage;
     }
  }      

  showFrom = (currentPage - 1) * PAGE_SIZE + 1;
  if(showFrom < 0){
    showFrom = 0
  }

  showTo = currentPage * PAGE_SIZE;
  if(showTo >= paging.getTotalRec()){
    showTo = paging.getTotalRec();
  }     

  paging.setShowTo(showTo);
  paging.setShowFrom(showFrom);
}
1 голос
/ 18 января 2011

Некоторые замечания:

  • В строке showTo = showFrom + 100- 1;, почему минус 1?
  • Если showTo равно paging.getTotalRec (), при следующем нажатии кнопки NextFrom будет превышать paging.getTotalRec ()
  • В предыдущей части отсутствуют тесты для предотвращения падения ниже 0

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...