1

我有一个房间数据库设置,我想查询该数据库 N 次并将每个查询的结果组合到一个实时数据数组中以显示给用户。

我很确定我想使用MediatorLiveData,但每个在线示例都有预定义数量的实时数据源组合。

我有以下设置:

宠物道

    @Query("SELECT * FROM pet_table WHERE name LIKE :petName")
    fun getPetsByPetName(petName: String): LiveData<Pet>

宠物资料库

    fun getPetsByPetName(petNames: List<String>): LiveData<List<Pet>> {
        for (petName: String in petNames) {
            val pets = petDao.getPetsByPetName(petName)
            // Combine into one live list of pets
        }
    }
4

1 回答 1

1

你在你的 DAO 中试过这个吗?

@Query("SELECT * FROM pet_table WHERE name IN (:petNames)")
fun getPetsByPetName(petNames: List<String>): LiveData<List<Pet>>

它应该使用最多 999 个参数的列表。(不确定参数是否必须是数组,或者列表是否正常)

https://developer.android.com/reference/androidx/room/Query

对我来说,它似乎更适合你给出的例子。

于 2020-04-14T21:30:48.180 回答