Android Room将N个查询的结果合并到实时数据列表中

问题描述 投票:0回答:1

我有一个会议室数据库设置,我想查询该数据库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
        }
    }
android kotlin android-room android-livedata mediatorlivedata
1个回答
0
投票

您是否在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

对我来说,您提供的示例似乎更合适。

© www.soinside.com 2019 - 2024. All rights reserved.