DataSource.Factory
-
android
abstract class DataSource.Factory<Key : Any, Value : Any>
Factory for DataSources.
Data-loading systems of an application or library can implement this interface to allow LiveData<PagedList>s to be created. For example, Room can provide a DataSource.Factory for a given SQL query:
@Dao
interface UserDao {
@Query("SELECT * FROM user ORDER BY lastName ASC")
public abstract DataSource.Factory<Integer, User> usersByLastName();
}
In the above sample, Integer is used because it is the Key type of PositionalDataSource. Currently, Room uses the LIMIT/OFFSET SQL keywords to page a large query with a PositionalDataSource.
| Parameters | |
|---|---|
<Key : Any> |
Key identifying items in DataSource. |
<Value : Any> |
Type of items in the list loaded by the DataSources. |
Summary
Public functions |
||
|---|---|---|
() -> PagingSource<Key, Value> |
asPagingSourceFactory(fetchDispatcher: CoroutineDispatcher) |
android
|
abstract DataSource<Key, Value> |
create()Create a |
android
|
open DataSource.Factory<Key, ToValue> |
Applies the given function to each value emitted by DataSources produced by this Factory. |
android
|
open DataSource.Factory<Key, ToValue> |
Applies the given function to each value emitted by DataSources produced by this Factory. |
android
|
open DataSource.Factory<Key, ToValue> |
Applies the given function to each value emitted by DataSources produced by this Factory. |
android
|
open DataSource.Factory<Key, ToValue> |
Applies the given function to each value emitted by DataSources produced by this Factory. |
android
|
Extension functions |
||
|---|---|---|
LiveData<PagedList<Value>> |
<Key : Any, Value : Any> DataSource.Factory<Key, Value>.This function is deprecated. PagedList is deprecated and has been replaced by PagingData |
android
|
LiveData<PagedList<Value>> |
<Key : Any, Value : Any> DataSource.Factory<Key, Value>.This function is deprecated. PagedList is deprecated and has been replaced by PagingData |
android
|
Flowable<PagedList<Value>> |
<Key : Any, Value : Any> DataSource.Factory<Key, Value>.This function is deprecated. PagedList is deprecated and has been replaced by PagingData |
android
|
Flowable<PagedList<Value>> |
<Key : Any, Value : Any> DataSource.Factory<Key, Value>.This function is deprecated. PagedList is deprecated and has been replaced by PagingData |
android
|
Flowable<PagedList<Value>> |
<Key : Any, Value : Any> DataSource.Factory<Key, Value>.This function is deprecated. PagedList is deprecated and has been replaced by PagingData |
android
|
Flowable<PagedList<Value>> |
<Key : Any, Value : Any> DataSource.Factory<Key, Value>.This function is deprecated. PagedList is deprecated and has been replaced by PagingData |
android
|
Observable<PagedList<Value>> |
<Key : Any, Value : Any> DataSource.Factory<Key, Value>.This function is deprecated. PagedList is deprecated and has been replaced by PagingData |
android
|
Observable<PagedList<Value>> |
<Key : Any, Value : Any> DataSource.Factory<Key, Value>.This function is deprecated. PagedList is deprecated and has been replaced by PagingData |
android
|
Observable<PagedList<Value>> |
<Key : Any, Value : Any> DataSource.Factory<Key, Value>.This function is deprecated. PagedList is deprecated and has been replaced by PagingData |
android
|
Observable<PagedList<Value>> |
<Key : Any, Value : Any> DataSource.Factory<Key, Value>.This function is deprecated. PagedList is deprecated and has been replaced by PagingData |
android
|
Public functions
asPagingSourceFactory
fun asPagingSourceFactory(
fetchDispatcher: CoroutineDispatcher = Dispatchers.IO
): () -> PagingSource<Key, Value>
create
abstract fun create(): DataSource<Key, Value>
Create a DataSource.
The DataSource should invalidate itself if the snapshot is no longer valid. If a DataSource becomes invalid, the only way to query more data is to create a new DataSource from the Factory.
androidx.paging.LivePagedListBuilder for example will construct a new PagedList and DataSource when the current DataSource is invalidated, and pass the new PagedList through the LiveData<PagedList> to observers.
| Returns | |
|---|---|
DataSource<Key, Value> |
the new DataSource. |
map
open fun <ToValue : Any> map(function: Function<Value, ToValue>): DataSource.Factory<Key, ToValue>
Applies the given function to each value emitted by DataSources produced by this Factory.
Same as mapByPage, but operates on individual items.
| Parameters | |
|---|---|
<ToValue : Any> |
Type of items produced by the new |
function: Function<Value, ToValue> |
Function that runs on each loaded item, returning items of a potentially new type. |
| Returns | |
|---|---|
DataSource.Factory<Key, ToValue> |
A new |
map
open fun <ToValue : Any> map(function: (Value) -> ToValue): DataSource.Factory<Key, ToValue>
Applies the given function to each value emitted by DataSources produced by this Factory.
An overload of map that accepts a kotlin function type.
Same as mapByPage, but operates on individual items.
| Parameters | |
|---|---|
<ToValue : Any> |
Type of items produced by the new |
function: (Value) -> ToValue |
Function that runs on each loaded item, returning items of a potentially new type. |
| Returns | |
|---|---|
DataSource.Factory<Key, ToValue> |
A new |
mapByPage
open fun <ToValue : Any> mapByPage(function: Function<List<Value>, List<ToValue>>): DataSource.Factory<Key, ToValue>
Applies the given function to each value emitted by DataSources produced by this Factory.
Same as map, but allows for batch conversions.
| Parameters | |
|---|---|
<ToValue : Any> |
Type of items produced by the new |
function: Function<List<Value>, List<ToValue>> |
Function that runs on each loaded page, returning items of a potentially new type. |
| Returns | |
|---|---|
DataSource.Factory<Key, ToValue> |
A new |
mapByPage
open fun <ToValue : Any> mapByPage(function: (List<Value>) -> List<ToValue>): DataSource.Factory<Key, ToValue>
Applies the given function to each value emitted by DataSources produced by this Factory.
An overload of mapByPage that accepts a kotlin function type.
Same as map, but allows for batch conversions.
| Parameters | |
|---|---|
<ToValue : Any> |
Type of items produced by the new |
function: (List<Value>) -> List<ToValue> |
Function that runs on each loaded page, returning items of a potentially new type. |
| Returns | |
|---|---|
DataSource.Factory<Key, ToValue> |
A new |
Extension functions
toLiveData
fun <Key : Any, Value : Any> DataSource.Factory<Key, Value>.toLiveData(
config: PagedList.Config,
initialLoadKey: Key? = null,
boundaryCallback: PagedList.BoundaryCallback<Value>? = null,
fetchExecutor: Executor = ArchTaskExecutor.getIOThreadExecutor()
): LiveData<PagedList<Value>>
Constructs a LiveData<PagedList>, from this DataSource.Factory, convenience for LivePagedListBuilder.
No work (such as loading) is done immediately, the creation of the first PagedList is deferred until the LiveData is observed.
| Parameters | |
|---|---|
config: PagedList.Config |
Paging configuration. |
initialLoadKey: Key? = null |
Initial load key passed to the first |
boundaryCallback: PagedList.BoundaryCallback<Value>? = null |
The boundary callback for listening to |
fetchExecutor: Executor = ArchTaskExecutor.getIOThreadExecutor() |
|
| See also | |
|---|---|
LivePagedListBuilder |
toLiveData
fun <Key : Any, Value : Any> DataSource.Factory<Key, Value>.toLiveData(
pageSize: Int,
initialLoadKey: Key? = null,
boundaryCallback: PagedList.BoundaryCallback<Value>? = null,
fetchExecutor: Executor = ArchTaskExecutor.getIOThreadExecutor()
): LiveData<PagedList<Value>>
Constructs a LiveData<PagedList>, from this DataSource.Factory, convenience for LivePagedListBuilder.
No work (such as loading) is done immediately, the creation of the first PagedList is deferred until the LiveData is observed.
| Parameters | |
|---|---|
pageSize: Int |
Page size. |
initialLoadKey: Key? = null |
Initial load key passed to the first |
boundaryCallback: PagedList.BoundaryCallback<Value>? = null |
The boundary callback for listening to |
fetchExecutor: Executor = ArchTaskExecutor.getIOThreadExecutor() |
Executor for fetching data from DataSources. |
| See also | |
|---|---|
LivePagedListBuilder |
toFlowable
fun <Key : Any, Value : Any> DataSource.Factory<Key, Value>.toFlowable(
config: PagedList.Config,
initialLoadKey: Key? = null,
boundaryCallback: PagedList.BoundaryCallback<Value>? = null,
fetchScheduler: Scheduler? = null,
notifyScheduler: Scheduler? = null,
backpressureStrategy: BackpressureStrategy = BackpressureStrategy.LATEST
): Flowable<PagedList<Value>>
Constructs a Flowable<PagedList>, from this DataSource.Factory, convenience for RxPagedListBuilder.
The returned Flowable will already be subscribed on the fetchScheduler, and will perform all loading on that scheduler. It will already be observed on notifyScheduler, and will dispatch new PagedLists, as well as their updates to that scheduler.
| Parameters | |
|---|---|
config: PagedList.Config |
Paging configuration. |
initialLoadKey: Key? = null |
Initial load key passed to the first |
boundaryCallback: PagedList.BoundaryCallback<Value>? = null |
The boundary callback for listening to |
fetchScheduler: Scheduler? = null |
|
notifyScheduler: Scheduler? = null |
|
backpressureStrategy: BackpressureStrategy = BackpressureStrategy.LATEST |
|
| See also | |
|---|---|
RxPagedListBuilder |
|
toObservable |
toFlowable
fun <Key : Any, Value : Any> DataSource.Factory<Key, Value>.toFlowable(
config: PagedList.Config,
initialLoadKey: Key? = null,
boundaryCallback: PagedList.BoundaryCallback<Value>? = null,
fetchScheduler: Scheduler? = null,
notifyScheduler: Scheduler? = null,
backpressureStrategy: BackpressureStrategy = BackpressureStrategy.LATEST
): Flowable<PagedList<Value>>
Constructs a Flowable<PagedList>, from this DataSource.Factory, convenience for RxPagedListBuilder.
The returned Flowable will already be subscribed on the fetchScheduler, and will perform all loading on that scheduler. It will already be observed on notifyScheduler, and will dispatch new PagedLists, as well as their updates to that scheduler.
| Parameters | |
|---|---|
config: PagedList.Config |
Paging configuration. |
initialLoadKey: Key? = null |
Initial load key passed to the first |
boundaryCallback: PagedList.BoundaryCallback<Value>? = null |
The boundary callback for listening to |
fetchScheduler: Scheduler? = null |
|
notifyScheduler: Scheduler? = null |
|
backpressureStrategy: BackpressureStrategy = BackpressureStrategy.LATEST |
|
| See also | |
|---|---|
RxPagedListBuilder |
|
toObservable |
toFlowable
fun <Key : Any, Value : Any> DataSource.Factory<Key, Value>.toFlowable(
pageSize: Int,
initialLoadKey: Key? = null,
boundaryCallback: PagedList.BoundaryCallback<Value>? = null,
fetchScheduler: Scheduler? = null,
notifyScheduler: Scheduler? = null,
backpressureStrategy: BackpressureStrategy = BackpressureStrategy.LATEST
): Flowable<PagedList<Value>>
Constructs a Flowable<PagedList>, from this DataSource.Factory, convenience for RxPagedListBuilder.
The returned Flowable will already be subscribed on the fetchScheduler, and will perform all loading on that scheduler. It will already be observed on notifyScheduler, and will dispatch new PagedLists, as well as their updates to that scheduler.
| Parameters | |
|---|---|
pageSize: Int |
Page size. |
initialLoadKey: Key? = null |
Initial load key passed to the first |
boundaryCallback: PagedList.BoundaryCallback<Value>? = null |
The boundary callback for listening to |
fetchScheduler: Scheduler? = null |
|
notifyScheduler: Scheduler? = null |
|
backpressureStrategy: BackpressureStrategy = BackpressureStrategy.LATEST |
|
| See also | |
|---|---|
RxPagedListBuilder |
|
toObservable |
toFlowable
fun <Key : Any, Value : Any> DataSource.Factory<Key, Value>.toFlowable(
pageSize: Int,
initialLoadKey: Key? = null,
boundaryCallback: PagedList.BoundaryCallback<Value>? = null,
fetchScheduler: Scheduler? = null,
notifyScheduler: Scheduler? = null,
backpressureStrategy: BackpressureStrategy = BackpressureStrategy.LATEST
): Flowable<PagedList<Value>>
Constructs a Flowable<PagedList>, from this DataSource.Factory, convenience for RxPagedListBuilder.
The returned Flowable will already be subscribed on the fetchScheduler, and will perform all loading on that scheduler. It will already be observed on notifyScheduler, and will dispatch new PagedLists, as well as their updates to that scheduler.
| Parameters | |
|---|---|
pageSize: Int |
Page size. |
initialLoadKey: Key? = null |
Initial load key passed to the first |
boundaryCallback: PagedList.BoundaryCallback<Value>? = null |
The boundary callback for listening to |
fetchScheduler: Scheduler? = null |
|
notifyScheduler: Scheduler? = null |
|
backpressureStrategy: BackpressureStrategy = BackpressureStrategy.LATEST |
|
| See also | |
|---|---|
RxPagedListBuilder |
|
toObservable |
toObservable
fun <Key : Any, Value : Any> DataSource.Factory<Key, Value>.toObservable(
config: PagedList.Config,
initialLoadKey: Key? = null,
boundaryCallback: PagedList.BoundaryCallback<Value>? = null,
fetchScheduler: Scheduler? = null,
notifyScheduler: Scheduler? = null
): Observable<PagedList<Value>>
Constructs a Observable<PagedList> from this DataSource.Factory, convenience for RxPagedListBuilder.
The returned Observable will already be subscribed on the fetchScheduler, and will perform all loading on that scheduler. It will already be observed on notifyScheduler, and will dispatch new PagedLists, as well as their updates to that scheduler.
| Parameters | |
|---|---|
config: PagedList.Config |
Paging configuration. |
initialLoadKey: Key? = null |
Initial load key passed to the first |
boundaryCallback: PagedList.BoundaryCallback<Value>? = null |
The boundary callback for listening to PagedList load state. |
fetchScheduler: Scheduler? = null |
|
notifyScheduler: Scheduler? = null |
|
| See also | |
|---|---|
RxPagedListBuilder |
|
toFlowable |
toObservable
fun <Key : Any, Value : Any> DataSource.Factory<Key, Value>.toObservable(
config: PagedList.Config,
initialLoadKey: Key? = null,
boundaryCallback: PagedList.BoundaryCallback<Value>? = null,
fetchScheduler: Scheduler? = null,
notifyScheduler: Scheduler? = null
): Observable<PagedList<Value>>
Constructs a Observable<PagedList> from this DataSource.Factory, convenience for RxPagedListBuilder.
The returned Observable will already be subscribed on the fetchScheduler, and will perform all loading on that scheduler. It will already be observed on notifyScheduler, and will dispatch new PagedLists, as well as their updates to that scheduler.
| Parameters | |
|---|---|
config: PagedList.Config |
Paging configuration. |
initialLoadKey: Key? = null |
Initial load key passed to the first |
boundaryCallback: PagedList.BoundaryCallback<Value>? = null |
The boundary callback for listening to PagedList load state. |
fetchScheduler: Scheduler? = null |
|
notifyScheduler: Scheduler? = null |
|
| See also | |
|---|---|
RxPagedListBuilder |
|
toFlowable |
toObservable
fun <Key : Any, Value : Any> DataSource.Factory<Key, Value>.toObservable(
pageSize: Int,
initialLoadKey: Key? = null,
boundaryCallback: PagedList.BoundaryCallback<Value>? = null,
fetchScheduler: Scheduler? = null,
notifyScheduler: Scheduler? = null
): Observable<PagedList<Value>>
Constructs a Observable<PagedList> from this DataSource.Factory, convenience for RxPagedListBuilder.
The returned Observable will already be subscribed on the fetchScheduler, and will perform all loading on that scheduler. It will already be observed on notifyScheduler, and will dispatch new PagedLists, as well as their updates to that scheduler.
| Parameters | |
|---|---|
pageSize: Int |
Size of pages to load. |
initialLoadKey: Key? = null |
Initial load key passed to the first |
boundaryCallback: PagedList.BoundaryCallback<Value>? = null |
The boundary callback for listening to |
fetchScheduler: Scheduler? = null |
|
notifyScheduler: Scheduler? = null |
|
| See also | |
|---|---|
RxPagedListBuilder |
|
toFlowable |
toObservable
fun <Key : Any, Value : Any> DataSource.Factory<Key, Value>.toObservable(
pageSize: Int,
initialLoadKey: Key? = null,
boundaryCallback: PagedList.BoundaryCallback<Value>? = null,
fetchScheduler: Scheduler? = null,
notifyScheduler: Scheduler? = null
): Observable<PagedList<Value>>
Constructs a Observable<PagedList> from this DataSource.Factory, convenience for RxPagedListBuilder.
The returned Observable will already be subscribed on the fetchScheduler, and will perform all loading on that scheduler. It will already be observed on notifyScheduler, and will dispatch new PagedLists, as well as their updates to that scheduler.
| Parameters | |
|---|---|
pageSize: Int |
Size of pages to load. |
initialLoadKey: Key? = null |
Initial load key passed to the first |
boundaryCallback: PagedList.BoundaryCallback<Value>? = null |
The boundary callback for listening to |
fetchScheduler: Scheduler? = null |
|
notifyScheduler: Scheduler? = null |
|
| See also | |
|---|---|
RxPagedListBuilder |
|
toFlowable |