PagingSourceDaoReturnTypeConverter



A DaoReturnTypeConverter that allows Room to return PagingSource types from @Dao functions.

You can register this converter via annotating a androidx.room3.Database or androidx.room3.Dao using the annotation androidx.room3.DaoReturnTypeConverters:

@DaoReturnTypeConverters(
PagingSourceDaoReturnTypeConverter::class
)

Summary

Public constructors

Cmn

Public functions

PagingSource<Int, T>
@DaoReturnTypeConverter(operations = [OperationType.READ])
<T : Any> convert(
    database: RoomDatabase,
    tableNames: Array<String>,
    roomRawQuery: RoomRawQuery,
    executeAndConvert: suspend (RoomRawQuery) -> List<T>
)

Converts a Room query into a PagingSource.

Cmn

Public constructors

PagingSourceDaoReturnTypeConverter

PagingSourceDaoReturnTypeConverter()

Public functions

convert

@DaoReturnTypeConverter(operations = [OperationType.READ])
fun <T : Any> convert(
    database: RoomDatabase,
    tableNames: Array<String>,
    roomRawQuery: RoomRawQuery,
    executeAndConvert: suspend (RoomRawQuery) -> List<T>
): PagingSource<Int, T>

Converts a Room query into a PagingSource.

This converter can be used for both OperationType.READ and OperationType.WRITE. Note that Room shortcut methods (@Insert, @Update, @Delete) are always treated as OperationType.WRITE.

Parameters
database: RoomDatabase

RoomDatabase instance.

tableNames: Array<String>

List of names of the tables of the RoomDatabase to observe for invalidation.

roomRawQuery: RoomRawQuery

The initial RoomRawQuery to be executed.

executeAndConvert: suspend (RoomRawQuery) -> List<T>

A suspend lambda function that invokes the part of the generated code that executes the query. This function takes a RoomRawQuery (modified for limit/offset) and returns a List of T. This ensures that each page load retrieves the expected list of items.

Returns
PagingSource<Int, T>

A PagingSource that emits pages of type T.