Paging Source Sample
class MyPagingSource( | |
private val api: MyApi | |
) : PagingSource<Int, MyModel>() { | |
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, MyModel> { | |
return try { | |
val result = api.getItems(params.key ?: STARTING_PAGE_INDEX) | |
Page( | |
data = result, | |
prevKey = params.key, | |
nextKey = result.nextPage ?: STARTING_PAGE_INDEX.plus(1) | |
) | |
} catch (e: IOException) { | |
LoadResult.Error(e) | |
} catch (e: HttpException) { | |
LoadResult.Error(e) | |
} | |
} | |
companion object { | |
private const val STARTING_PAGE_INDEX = 1 | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment