如何在 Android 中使用 Paging 3 库观察 Room 中更改的项目

Rob*_*yan 6 android android-room android-paging kotlin-coroutines android-paging-3

我有一个正在使用 加载的数据列表PagingSource

这是我在 DAO 中的代码:

  @Query("SELECT * FROM Transport")
  fun getAllTransportsPaged(): PagingSource<Int, Transport>
Run Code Online (Sandbox Code Playgroud)

我正在通过以下方式获取分页数据Flow

Pager(config = PagingConfig(
          pageSize = 100,
          enablePlaceholders = true,
      )) {
        transportsDao.getAllTransportsPaged()
      }.flow
       .cachedIn(viewModelScope + Dispatchers.IO)
Run Code Online (Sandbox Code Playgroud)

我有另一个函数正在更新本地数据库中的项目:

@Query("UPDATE Transport SET favorite = :favorite WHERE id = :id")
suspend fun changeFavorite(id: Int, favorite: Boolean)
Run Code Online (Sandbox Code Playgroud)

调用此函数后,列表中的整个数据将从头开始加载。

有没有办法使用分页库仅获取更改的数据?