【问题标题】:How can I get total pages from per page item count and total item count API response?如何从每页项目数和总项目数 API 响应中获取总页数?
【发布时间】:2020-09-07 22:26:26
【问题描述】:

我正在从删除端点获取数据。数据响应仅包含项目总数,但不包含总页数。鉴于我只有总项目数和每页项目数,如何计算总页数?我需要这个,因为我正在尝试设置分页库

例如:

perPage = 10
totalItemCount = 10
totalPages = 1

想法是totalItemCount 大于10 + 1 但小于等于20,totalPages 为2;并且 totalItemCount > 10 + 10 + 1 但小于等于 30,totalPages = 3 等等...

我无法使用 Kotlin 制定一个好的算法来计算这个

【问题讨论】:

  • 我想你想使用除法和模数的组合:totalPages = (totalItemCount / perPage) + (totalItemCount % perPage ? 1 : 0)
  • 这会处理这些场景吗?
  • 如果 totalItemCount 为 0,则返回 0 页,如果 totalItemCount 为 1-10,则返回 1 页,如果为 11-20,则返回 2 页,依此类推。
  • 啊,谢谢。测试
  • 检查语法,因为我一生中没有写过一行 Kotlin。并尝试了解除法 (/)、模数 (%) 和三元运算符 (?) 的作用。你可以用其他方式来写它,但试着理解那条线背后的想法。

标签: android kotlin android-paging-library


【解决方案1】:

这似乎有效。我在https://pl.kotl.in/hUDoamkG3试过了:

fun main()
{
    val listOfTotalItemCounts = listOf(0, 1, 9, 10, 15, 19, 20, 21, 124)
    val perPage = 10
    
    for (totalItemCount in listOfTotalItemCounts)
    {
        var result = (totalItemCount / perPage)
        result = if (totalItemCount % perPage == 0) result else (result + 1)
        
        print("When totalItemCount = ")
        print(totalItemCount)
        print(" ---> result = ")
        println(result)
    }
}

它产生以下输出:

When totalItemCount = 0 ---> result = 0
When totalItemCount = 1 ---> result = 1
When totalItemCount = 9 ---> result = 1
When totalItemCount = 10 ---> result = 1
When totalItemCount = 15 ---> result = 2
When totalItemCount = 19 ---> result = 2
When totalItemCount = 20 ---> result = 2
When totalItemCount = 21 ---> result = 3
When totalItemCount = 124 ---> result = 13

【讨论】:

    猜你喜欢
    • 2013-01-14
    • 1970-01-01
    • 2021-12-12
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多