PageKeyedDataSource

public abstract class PageKeyedDataSource<Key extends Object, Value extends Object> extends DataSource

Object
   ↳ DataSource
     ↳ PageKeyedDataSource

Incremental data loader for page-keyed content, where requests return keys for next/previous pages.

Implement a DataSource using PageKeyedDataSource if you need to use data from page N - 1 to load page N. This is common, for example, in network APIs that include a next/previous link or key with each page load.

The InMemoryByPageRepository in the PagingWithNetworkSample shows how to implement a network PageKeyedDataSource using Retrofit, while handling swipe-to-refresh, network errors, and retry.

Parameters
<Key extends Object>

Type of data used to query Value types out of the DataSource.

<Value extends Object>

Type of items being loaded by the DataSource.

Summary

Nested types

PageKeyedDataSource.LoadCallback

Callback for loadBefore and loadAfter to return data.

PageKeyedDataSource.LoadInitialCallback

Callback for loadInitial to return data and, optionally, position/count information.

PageKeyedDataSource.LoadInitialParams

Holder object for inputs to loadInitial.

PageKeyedDataSource.LoadParams

Holder object for inputs to loadBefore and loadAfter.

Public constructors

<Key extends Object, Value extends Object> PageKeyedDataSource()

Public methods

abstract void

Append page with the key specified by LoadParams.key.

abstract void

Prepend page with the key specified by LoadParams.key.

abstract void

Load initial data.

final @NonNull PageKeyedDataSource<@NonNull Key, @NonNull ToValue>
<ToValue extends Object> map(
    @NonNull Function<@NonNull Value, @NonNull ToValue> function
)

Applies the given function to each value emitted by the DataSource.

final @NonNull PageKeyedDataSource<@NonNull Key, @NonNull ToValue>
<ToValue extends Object> map(
    @NonNull Function1<@NonNull Value, @NonNull ToValue> function
)

Applies the given function to each value emitted by the DataSource.

final @NonNull PageKeyedDataSource<@NonNull Key, @NonNull ToValue>
<ToValue extends Object> mapByPage(
    @NonNull Function<@NonNull List<@NonNull Value>, @NonNull List<@NonNull ToValue>> function
)

Applies the given function to each value emitted by the DataSource.

final @NonNull PageKeyedDataSource<@NonNull Key, @NonNull ToValue>
<ToValue extends Object> mapByPage(
    @NonNull Function1<@NonNull List<@NonNull Value>, @NonNull List<@NonNull ToValue>> function
)

Applies the given function to each value emitted by the DataSource.

Inherited methods

From class DataSource
@AnyThread void

Add a callback to invoke when the DataSource is first invalidated.

@AnyThread void

Signal the data source to stop loading, and notify its callback.

@AnyThread void

Remove a previously added invalidate callback.

Public constructors