public abstract class PositionalDataSource<T extends Object> extends DataSource

   ↳ DataSource
     ↳ PositionalDataSource

Position-based data loader for a fixed-size, countable data set, supporting fixed-size loads at arbitrary page positions.

Extend PositionalDataSource if you can load pages of a requested size at arbitrary positions, and provide a fixed item count. If your data source can't support loading arbitrary requested page sizes (e.g. when network page size constraints are only known at runtime), either use PageKeyedDataSource or ItemKeyedDataSource, or pass the initial result with the two parameter LoadInitialCallback.onResult.

Room can generate a Factory of PositionalDataSources for you:

interface UserDao {
@Query("SELECT * FROM user ORDER BY age DESC")
public abstract DataSource.Factory<Integer, User> loadUsersByAgeDesc();
<T extends Object>

Type of items being loaded by the PositionalDataSource.


Nested types


Callback for loadInitial to return data, position, and count.


Holder object for inputs to loadInitial.


Callback for PositionalDataSource loadRange to return data.


Holder object for inputs to loadRange.

Public constructors

Public methods

abstract @WorkerThread void

Load initial list data.

abstract @WorkerThread void

Called to load a range of data from the DataSource.

final @NonNull PositionalDataSource<@NonNull V>
<V extends Object> map(Functi