I am trying to follow this Paging 3 Codelab:https://developer.android.com/codelabs/android-paging, but when trying to compile at the end I am getting this error:
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()
And also the end project has the same error. I can't see any difference between the code and mine.
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()
}
GithubRepository
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
}
}
build.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"
Also haven't seen any issues open about it. I tried changing versions of room and paging, restarting, invalidating cache, what I am doing wrong?
CodePudding user response:
You are missing the room-paging library. Add it to your project by adding the following line to your app module's build.gradle file:
implementation "androidx.room:room-paging:$roomVersion"