Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

Factory

abstract class Factory<Key : Any, Value : Any>
kotlin.Any
   ↳ androidx.paging.DataSource.Factory

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.

Summary

Public constructors

Factory for DataSources.

Public methods
() -> PagingSource<Key, Value>
asPagingSourceFactory(fetchDispatcher: CoroutineDispatcher = Dispatchers.IO)

abstract DataSource<Key, Value>

Create a DataSource.

open DataSource.Factory<Key, ToValue>
map(function: Function<Value, ToValue>)

Applies the given function to each value emitted by DataSources produced by this Factory.

open DataSource.Factory<Key, ToValue>
map(function: (Value) -> ToValue)

Applies the given function to each value emitted by DataSources produced by this Factory.

open DataSource.Factory<Key, ToValue>
mapByPage(function: Function<List<Value>, List<ToValue>>)

Applies the given function to each value emitted by DataSources produced by this Factory.

open DataSource.Factory<Key, ToValue>
mapByPage(function: (List<Value>) -> List<ToValue>)

Applies the given function to each value emitted by DataSources produced by this Factory.

Extension functions
From androidx.paging
Flowable<PagedList<Value>>
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)

Constructs a Flowable<PagedList>, from this DataSource.Factory, convenience for RxPagedListBuilder.

Flowable<PagedList<Value>>
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)

Constructs a Flowable<PagedList>, from this DataSource.Factory, convenience for RxPagedListBuilder.

LiveData<PagedList<Value>>
DataSource.Factory<Key, Value>.toLiveData(config: PagedList.Config, initialLoadKey: Key? = null, boundaryCallback: PagedList.BoundaryCallback<Value>? = null, fetchExecutor: Executor = ArchTaskExecutor.getIOThreadExecutor())

Constructs a LiveData<PagedList>, from this DataSource.Factory, convenience for LivePagedListBuilder.

LiveData<PagedList<Value>>
DataSource.Factory<Key, Value>.toLiveData(pageSize: Int, initialLoadKey: Key? = null, boundaryCallback: PagedList.BoundaryCallback<Value>? = null, fetchExecutor: Executor = ArchTaskExecutor.getIOThreadExecutor())

Constructs a LiveData<PagedList>, from this DataSource.Factory, convenience for LivePagedListBuilder.

Observable<PagedList<Value>>
DataSource.Factory<Key, Value>.toObservable(config: PagedList.Config, initialLoadKey: Key? = null, boundaryCallback: PagedList.BoundaryCallback<Value>? = null, fetchScheduler: Scheduler? = null, notifyScheduler: Scheduler? = null)

Constructs a Observable<PagedList> from this DataSource.Factory, convenience for RxPagedListBuilder.

Observable<PagedList<Value>>
DataSource.Factory<Key, Value>.toObservable(pageSize: Int, initialLoadKey: Key? = null, boundaryCallback: PagedList.BoundaryCallback<Value>? = null, fetchScheduler: Scheduler? = null, notifyScheduler: Scheduler? = null)

Constructs a Observable<PagedList> from this DataSource.Factory, convenience for RxPagedListBuilder.

Public constructors

<init>

Factory()

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 Key identifying items in DataSource.
Value Type of items in the list loaded by the DataSources.

Public methods

asPagingSourceFactory

@JvmOverloads 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.

Return
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
function: Function<Value, ToValue> Function that runs on each loaded item, returning items of a potentially new type.
ToValue Type of items produced by the new DataSource, from the passed function.
Return
A new DataSource.Factory, which transforms items using the given function.

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
function: (Value) -> ToValue Function that runs on each loaded item, returning items of a potentially new type.
ToValue Type of items produced by the new DataSource, from the passed function.
Return
A new DataSource.Factory, which transforms items using the given function.

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
function: Function<List<Value>, List<ToValue>> Function that runs on each loaded page, returning items of a potentially new type.
ToValue Type of items produced by the new DataSource, from the passed function.
Return
A new DataSource.Factory, which transforms items using the given function.

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
function: (List<Value>) -> List<ToValue> Function that runs on each loaded page, returning items of a potentially new type.
ToValue Type of items produced by the new DataSource, from the passed function.
Return
A new DataSource.Factory, which transforms items using the given function.