Что такое пагинация

«Что такое пагинация» — вопрос из категории UI и Views, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Пагинация — это разбиение данных на части (страницы) для постепенной загрузки, чтобы избежать перегрузки UI и сети. В Android часто реализуется через Paging Library (Jetpack Paging 3).

Ключевые компоненты:

  • PagingSource — загрузка данных (например, из API/БД)
  • Pager — управление потоком данных
  • PagingDataAdapter — отображение в RecyclerView

Пример с Paging 3:

class MyPagingSource : PagingSource<Int, Item>() {
    override suspend fun load(params: LoadParams<Int>): LoadResult<Int, Item> {
        val page = params.key ?: 0
        return try {
            val items = api.fetchItems(page)
            LoadResult.Page(
                data = items,
                prevKey = if (page > 0) page - 1 else null,
                nextKey = if (items.isEmpty()) null else page + 1
            )
        } catch (e: Exception) {
            LoadResult.Error(e)
        }
    }
}

val pager = Pager(PagingConfig(pageSize = 20)) {
    MyPagingSource()
}
val flow = pager.flow.cachedIn(viewModelScope)