Android Room как искать по тексту при использовании DataSource.Factory?

В моем проекте с использованием PagedListAdapter для разбивки на страницы и приложение также может искать по ключевым словам.

DAO.kt

@Query("SELECT * FROM Item WHERE name LIKE :keyword")
fun getItems(keyword: String): DataSource.Factory<Int, ItemEntity>

Создайте

lateinit var itemLivePagedList: LiveData<PagedList<Item>>

.
.
.

val dataSourceFactory = itemUseCase.getItems(keyword)
val boundaryCallback = MyBoundaryCallback(itemUseCase, compositeDisposable, PAGE_SIZE)
itemLivePagedList = LivePagedListBuilder(dataSourceFactory, pagedListConfig)
            .setBoundaryCallback(boundaryCallback)
            .build()

Как я могу обновить список при изменении ключевого слова?

1 ответ

Решение

Когда keyword изменения, вы должны позвонить itemUseCase.getItems(keyword) еще раз.

Посмотри на этот проект. он был написан на Java, но показывает, как реализовать сценарий поиска с помощью PagingLibrary.

Подробнее см. В этом ответе.

Другие вопросы по тегам