Ответ
Пагинация — это разбиение данных на части (страницы) для постепенной загрузки, чтобы избежать перегрузки 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)