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
对我来说,你给出的例子似乎更合适。
我有一个房间数据库设置,我想查询该数据库 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
对我来说,你给出的例子似乎更合适。