根据当前位置和项目总数获取当前页面上的项目数
本文关键字:当前页 获取 项目数 位置 项目 | 更新日期: 2023-09-27 18:22:43
我有一个很长的项目列表,每页显示10个项目。我所知道的只是当前选择的行号(在1和总项目之间,而不是当前页面中的1-10)和项目总数。我需要计算当前页面上有多少项目。
例如,总共12个项目,所选行=11,因此页面上会有2个项目(在第2页)
如果行是3,答案是10,因为它在第1页,一整页。
这是我的代码,它不起作用。我可以得到剩余的,但似乎无法计算出上半场。我相信我没有使用的功能有一些明显的答案
private int NumberOfItemsOnPage()
{
int itemsOnPage = 0;
if (CurrentCursorPosition + 10 <= TotalItems)
{
itemsOnPage = 10;
}
else
{
itemsOnPage = TotalItems % 10;
}
return itemsOnPage;
}
我认为您需要将问题分为两个较小的问题。第一个问题是找出你所在的页面。
const int PAGE_SIZE = 10;
int currentItemPage = (currentItemPosition / PAGE_SIZE) + 1;
第二个问题是找出你有多少整页。
int fullPages = totalItems / PAGE_SIZE;
最后,如果currentItemPage
在fullPages
内,则意味着您的currentItem位于包含PAGE_SIZE
项的页面中,如果不是,则位于包含提醒项的最后一页中。
int itemsInCurrentItemPage = currentItemPage <= fullPages ? PAGE_SIZE : totalItems % PAGE_SIZE;
假设所有索引都是基于0的:
var firstItemOnPage = currentCursorPosition / 10 * 10;
return (totalItems < firstItemOnPage + 10) ? totalItems - firstItemOnPage : 10;
(只是一个草图,我确信某个地方有错误。这需要一些单元测试。)
这应该能完成任务,你需要整数除法:
private int NumberOfItemsOnPage(int currentPosition, int totalItems, int itemsPerPage = 10)
{
int currentPage = currentPosition / itemsPerPage + 1;
int maxPage = totalItems / itemsPerPage + 1;
int itemsOnPage = currentPage == maxPage ? totalItems / itemsPerPage : itemsPerPage;
return itemsOnPage;
}
我会试试这个:
return (TotalItems / 10) > (CurrentCursorPosition / 10) ? 10 : CurrentCursorPosition % 10
如果TotalItems
包含10
的次数大于CurrentCursorPosition
包含10
的次数,则表示您不在最后一页,并返回10。否则,返回CurrentCursorPosition % 10
。。。