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 | |
---|---|
<init>() Factory for DataSources. |
Public methods | |
---|---|
() -> PagingSource<Key, Value> |
asPagingSourceFactory(fetchDispatcher: CoroutineDispatcher = Dispatchers.IO) |
abstract DataSource<Key, Value> |
create() Create a DataSource. |
open DataSource.Factory<Key, 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> |
Applies the given function to each value emitted by DataSources produced by this Factory. |
open DataSource.Factory<Key, ToValue> |
Applies the given function to each value emitted by DataSources produced by this Factory. |
Extension functions | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
From androidx.paging
|
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