我有一个会议室数据库设置,我想查询该数据库N次,并将每个查询的结果合并到一个实时数据数组中以显示给用户。
我很确定我想使用MediatorLiveData
,但每个在线示例都具有预定义数量的实时数据源,正在组合中。
我有以下设置:
petDao
@Query("SELECT * FROM pet_table WHERE name LIKE :petName")
fun getPetsByPetName(petName: String): LiveData<Pet>
petRepository
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
对我来说,您提供的示例似乎更合适。