【问题标题】:Android Paging 3 Codelabs failed on Room PagingAndroid Paging 3 Codelabs 在 Room Paging 上失败
【发布时间】:2023-01-18 05:21:42
【问题描述】:

我正在尝试遵循此 Paging 3 Codelab:https://developer.android.com/codelabs/android-paging,但在最后尝试编译时出现此错误:

RepoDao.java:17: error: To use PagingSource, you must add `room-paging` artifact from Room as a dependency. androidx.room:room-paging:<version>
public abstract androidx.paging.PagingSource<java.lang.Integer, com.example.android.codelabs.paging.model.Repo> reposByName(@org.jetbrains.annotations.NotNull()

而且最终项目也有同样的错误。我看不出代码和我的有什么区别。

RepoDao

@Dao
interface RepoDao {

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    suspend fun  insertAll(repos: List<Repo>)

    @Query("SELECT * FROM repos WHERE " +
            "name LIKE :queryString OR description LIKE :queryString " +
            "ORDER BY stars DESC, name ASC")
    fun reposByName(queryString: String): PagingSource<Int, Repo>

    @Query("DELETE FROM repos")
    suspend fun clearRepos()

}

Github 仓库

class GithubRepository(
    private val service: GithubService,
    private val database: RepoDatabase
) {

    fun getSearchResultStream(query: String): Flow<PagingData<Repo>> {
        Log.d("GithubRepository", "New query: $query")
        // appending '%' so we can allow other characters to be before and after the query string
        val dbQuery = "%${query.replace(' ', '%')}%"
        val pagingSourceFactory = { database.reposDao().reposByName(dbQuery) }


        @OptIn(ExperimentalPagingApi::class)
        return Pager(
            config = PagingConfig(
                pageSize = NETWORK_PAGE_SIZE,
                enablePlaceholders = false
            ),
            remoteMediator = GithubRemoteMediator(
                query,
                service,
                database
            ),
            pagingSourceFactory = pagingSourceFactory
        ).flow

    }

    companion object {
        const val NETWORK_PAGE_SIZE = 50
    }
}

构建.gradle

roomVersion = '2.5.0'
pagingVersion = '3.1.1'


implementation "androidx.room:room-runtime:$roomVersion"
implementation "androidx.room:room-ktx:$roomVersion"
implementation "androidx.paging:paging-runtime-ktx:$pagingVersion"
kapt "androidx.room:room-compiler:$roomVersion"

也没有看到任何关于它的问题。我尝试更改房间和分页的版本、重新启动、使缓存无效,我做错了什么?

【问题讨论】:

  • 您是否尝试按照错误消息所说的内容添加对 room-paging 工件的依赖?

标签: android android-paging google-codelab


【解决方案1】:

您缺少 room-paging library。通过将以下行添加到您的应用程序模块的 build.gradle 文件中,将其添加到您的项目中:

implementation "androidx.room:room-paging:$roomVersion"

【讨论】:

    猜你喜欢
    • 2020-12-12
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 2021-10-05
    • 2020-11-12
    • 1970-01-01
    相关资源
    最近更新 更多