Android Комната, объединяющая результаты N запросов в живой список данных - PullRequest
0 голосов
/ 15 апреля 2020

У меня настроена база данных комнаты, и я хочу запросить эту базу данных 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
        }
    }

1 Ответ

1 голос
/ 15 апреля 2020

Вы пробовали это в своем DAO?

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

Должен работать со списком до 999 аргументов. (не уверен, должен ли параметр быть массивом, или список в порядке) прочитала.

...