Android房间使用DataSource.Factory时如何按文字搜索?

Android Room how to search by text when using DataSource.Factory?

在我的项目中使用 PagedListAdapter 进行分页,应用程序还可以按关键字搜索。

DAO.kt

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

Create

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()

关键字更改后如何更新列表?

keyword改变时,你必须再次调用itemUseCase.getItems(keyword)

看看this project。它是在 Java 中编写的,但它展示了如何使用 PagingLibrary 实现搜索场景。

有关详细信息,请参阅此