Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

RxPagedListBuilder

class RxPagedListBuilder<Key : Any!, Value : Any!>
kotlin.Any
   ↳ androidx.paging.RxPagedListBuilder

Builder for Observable<PagedList> or Flowable<PagedList>, given a DataSource.Factory and a PagedList.Config.

The required parameters are in the constructor, so you can simply construct and build, or optionally enable extra features (such as initial load key, or BoundaryCallback).

The returned observable/flowable will already be subscribed on the setFetchScheduler(Scheduler), and will perform all loading on that scheduler. It will already be observed on setNotifyScheduler(Scheduler), and will dispatch new PagedLists, as well as their updates to that scheduler.

Summary

Public constructors

<init>(@NonNull dataSourceFactory: DataSource.Factory<Key, Value>, @NonNull config: PagedList.Config)

Creates a RxPagedListBuilder with required parameters.

<init>(@NonNull dataSourceFactory: DataSource.Factory<Key, Value>, pageSize: Int)

Creates a RxPagedListBuilder with required parameters.

Public methods

Flowable<PagedList<Value>!>
buildFlowable(@NonNull backpressureStrategy: BackpressureStrategy)

Constructs a Flowable<PagedList>.

Observable<PagedList<Value>!>

Constructs a Observable<PagedList>.

RxPagedListBuilder<Key, Value>
setBoundaryCallback(@Nullable boundaryCallback: PagedList.BoundaryCallback<Value>?)

Sets a PagedList.BoundaryCallback on each PagedList created, typically used to load additional data from network when paging from local storage.

RxPagedListBuilder<Key, Value>
setFetchScheduler(@NonNull scheduler: Scheduler)

Sets scheduler which will be used for background fetching of PagedLists, as well as on-demand fetching of pages inside.

RxPagedListBuilder<Key, Value>
setInitialLoadKey(@Nullable key: Key?)

First loading key passed to the first PagedList/DataSource.

RxPagedListBuilder<Key, Value>
setNotifyScheduler(@NonNull scheduler: Scheduler)

Sets scheduler which will be used for observing new PagedLists, as well as loading updates within the PagedLists.

Public constructors

<init>

RxPagedListBuilder(@NonNull dataSourceFactory: DataSource.Factory<Key, Value>, @NonNull config: PagedList.Config)

Creates a RxPagedListBuilder with required parameters.

Parameters
dataSourceFactory DataSource.Factory<Key, Value>: DataSource factory providing DataSource generations.
config DataSource.Factory<Key, Value>: Paging configuration.

<init>

RxPagedListBuilder(@NonNull dataSourceFactory: DataSource.Factory<Key, Value>, pageSize: Int)

Creates a RxPagedListBuilder with required parameters.

This method is a convenience for:

RxPagedListBuilder(dataSourceFactory,
              new PagedList.Config.Builder().setPageSize(pageSize).build())
      
Parameters
dataSourceFactory DataSource.Factory<Key, Value>: DataSource.Factory providing DataSource generations.
pageSize DataSource.Factory<Key, Value>: Size of pages to load.

Public methods

buildFlowable

@NonNull fun buildFlowable(@NonNull backpressureStrategy: BackpressureStrategy): Flowable<PagedList<Value>!>

Constructs a Flowable<PagedList>. The returned Observable will already be observed on the notify scheduler, and subscribed on the fetch scheduler.

Parameters
backpressureStrategy BackpressureStrategy: BackpressureStrategy for the Flowable to use.
Return
Flowable<PagedList<Value>!>: The Flowable of PagedLists

buildObservable

@NonNull fun buildObservable(): Observable<PagedList<Value>!>

Constructs a Observable<PagedList>.

The returned Observable will already be observed on the notify scheduler, and subscribed on the fetch scheduler.

Return
Observable<PagedList<Value>!>: The Observable of PagedLists

setBoundaryCallback

@NonNull fun setBoundaryCallback(@Nullable boundaryCallback: PagedList.BoundaryCallback<Value>?): RxPagedListBuilder<Key, Value>

Sets a PagedList.BoundaryCallback on each PagedList created, typically used to load additional data from network when paging from local storage.

Pass a BoundaryCallback to listen to when the PagedList runs out of data to load. If this method is not called, or null is passed, you will not be notified when each DataSource runs out of data to provide to its PagedList.

If you are paging from a DataSource.Factory backed by local storage, you can set a BoundaryCallback to know when there is no more information to page from local storage. This is useful to page from the network when local storage is a cache of network data.

Note that when using a BoundaryCallback with a Observable<PagedList>, method calls on the callback may be dispatched multiple times - one for each PagedList/DataSource pair. If loading network data from a BoundaryCallback, you should prevent multiple dispatches of the same method from triggering multiple simultaneous network loads.

Parameters
boundaryCallback PagedList.BoundaryCallback<Value>?: The boundary callback for listening to PagedList load state.
Return
RxPagedListBuilder<Key, Value>: this

setFetchScheduler

@NonNull fun setFetchScheduler(@NonNull scheduler: Scheduler): RxPagedListBuilder<Key, Value>

Sets scheduler which will be used for background fetching of PagedLists, as well as on-demand fetching of pages inside.

If not set, defaults to the Arch components I/O thread pool.

The built observable/flowable will be subscribed on this scheduler.

Parameters
scheduler Scheduler: Scheduler used to fetch from DataSources, generally a background thread pool for e.g. I/O or network loading.
Return
RxPagedListBuilder<Key, Value>: this

setInitialLoadKey

@NonNull fun setInitialLoadKey(@Nullable key: Key?): RxPagedListBuilder<Key, Value>

First loading key passed to the first PagedList/DataSource.

When a new PagedList/DataSource pair is created after the first, it acquires a load key from the previous generation so that data is loaded around the position already being observed.

Parameters
key Key?: Initial load key passed to the first PagedList/DataSource.
Return
RxPagedListBuilder<Key, Value>: this

setNotifyScheduler

@NonNull fun setNotifyScheduler(@NonNull scheduler: Scheduler): RxPagedListBuilder<Key, Value>

Sets scheduler which will be used for observing new PagedLists, as well as loading updates within the PagedLists.

If not set, defaults to the UI thread.

The built observable/flowable will be observed on this scheduler, so that the thread receiving PagedLists will also receive the internal updates to the PagedList.

Parameters
scheduler Scheduler: Scheduler that receives PagedList updates, and where PagedList.Callback calls are dispatched. Generally, this is the UI/main thread.
Return
RxPagedListBuilder<Key, Value>: this