根据当前位置和项目总数获取当前页面上的项目数

本文关键字:当前页 获取 项目数 位置 项目 | 更新日期: 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;

最后,如果currentItemPagefullPages内,则意味着您的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。。。