RxPagingSource


abstract class RxPagingSource<Key : Any, Value : Any> : PagingSource


Rx-based compatibility wrapper around PagingSource's suspending APIs.

import androidx.paging.PagingState import androidx.paging.rxjava2.RxPagingSource /**  * Sample RxPagingSource which loads `Item`s from network requests via Retrofit to a backend  * service, which uses String tokens to load pages (each response has a next/previous token).  */ class MyPagingSource(  val myBackend: RxBackendService,  val searchTerm: String ) : RxPagingSource<String, Item>() {  override fun loadSingle(params: LoadParams<String>): Single<LoadResult<String, Item>> {  return myBackend  // Single-based network load  .searchUsers(searchTerm, params.key)  .subscribeOn(Schedulers.io())  .map<LoadResult<String, Item>> { result ->  LoadResult.Page(  data = result.items,  prevKey = result.prev,  nextKey = result.next  )  }  .onErrorReturn { e ->  when (e) {  // Retrofit calls that return the body type throw either IOException for  // network failures, or HttpException for any non-2xx HTTP status codes.  // This code reports all errors to the UI, but you can inspect/wrap the  // exceptions to provide more context.  is IOException -> LoadResult.Error(e)  is HttpException -> LoadResult.Error(e)  else -> throw e  }  }  }  override fun getRefreshKey(state: PagingState<String, Item>): String? {  return state.anchorPosition?.let { state.closestItemToPosition(it)?.id }  } }

Summary

Public constructors

<Key : Any, Value : Any> RxPagingSource()

Public functions

final suspend PagingSource.LoadResult<Key, Value>
abstract Single<PagingSource.LoadResult<Key, Value>>

Loading API for PagingSource.

Inherited functions

From androidx.paging.PagingSource
abstract Key?
getRefreshKey(state: PagingState<Key, Value>)
Unit
Unit
registerInvalidatedCallback(onInvalidatedCallback: () -> Unit)
Unit
unregisterInvalidatedCallback(onInvalidatedCallback: () -> Unit)

Public constructors

RxPagingSource

<Key : Any, Value : Any> RxPagingSource()

Public functions

load

final suspend fun load(params: PagingSource.LoadParams<Key>): PagingSource.LoadResult<Key, Value>

loadSingle

Added in 3.0.0
abstract fun loadSingle(params: PagingSource.LoadParams<Key>): Single<PagingSource.LoadResult<Key, Value>>

Loading API for PagingSource.

Implement this method to trigger your async load (e.g. from database or network).