#android #kotlin #android-paging-library
#Android #kotlin #android-библиотека подкачки
Вопрос:
Я извлекаю данные из удаленной конечной точки. Ответ данных содержит только общее количество элементов, но не общую страницу. Как я могу рассчитать общее количество страниц, учитывая, что у меня есть только общее количество элементов и количество элементов на странице? Мне это нужно, потому что я пытаюсь настроить библиотеку подкачки
например:
perPage = 10
totalItemCount = 10
totalPages = 1
Идея в том, что totalItemCount больше 10 1, но меньше или равно 20, TotalPages будет 2; И totalItemCount > 10 10 1 но меньше или равно 30, TotalPages = 3 и так далее…
Я не смог создать хороший алгоритм для вычисления этого с помощью Kotlin
Комментарии:
1. Я думаю, вы хотите использовать комбинацию деления и модуля:
totalPages = (totalItemCount / perPage) (totalItemCount % perPage ? 1 : 0)
2. это будет обрабатывать сценарии?
3. Это вернет 0 страниц, если
totalItemCount
равно 0, 1 страницу, еслиtotalItemCount
равно 1-10, 2 страницы, если это 11-20, и так далее.4. Ах, спасибо. Тестирование
5. Проверьте синтаксис, потому что я не написал ни одной строки Kotlin в своей жизни. И попытайтесь понять, что делают division (
/
), modulus (%
) и тернарный оператор (?
). Вы можете написать это другими способами, но постарайтесь понять идею, стоящую за этой строкой.
Ответ №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