Android 房间将 N 个查询的结果组合成一个实时数据列表

Android Room combining the result of N queries into a live data list

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

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

我有以下设置:

petDao

    @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
        }
    }

你在你的 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

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