У меня есть приложение для социальных сетей, которое отображает список пользователей, и мне нужен эффективный способ извлечения объекта из моих LiveData с использованием его первичного ключа.
Пример : Получить набор пользовательских POJO из моего LiveData >, предоставив СПИСОК пользовательских целых чисел (т. Е. Пользователей 12, 5, 7 и 1). Мне нужно иметь возможность искать этих пользователей по userId для отображения в соответствующем порядке в пользовательском интерфейсе.
Мне кажется, я хочу что-то более похожее на LiveData <<strong> Map >, но как я могу реализовать это, используя базу данных Room, не прерывая обратные вызовы LiveData из моей локальной БД -> Room - > LiveData -> UI?
ПРЕДЛОЖЕНИЕ 1 :
Измените реализацию моей комнаты так, чтобы она как-то возвращала LiveData, содержащую HashMap из .
Текущая реализация комнаты:
@Query("SELECT * FROM users WHERE user_id in :userIds LIMIT 1")
LiveData<List<User>> getUsers(List<Integer> userIds);
Предложенная реализация Room (не знаю, возможно ли что-то подобное или как это будет выглядеть):
@Query("SELECT * FROM users WHERE user_id in :userIds LIMIT 1")
LiveData<**HashMap**<Integer,User>> getUsers(List<Integer> userIds);
ПРЕДЛОЖЕНИЕ 2 :
Иметь список многих объектов LiveData ВНУТРИ карты:
Карта > liveDataUsers;
Это может быть чем-то, на что стоит обратить внимание, но я обеспокоен тем, что наличие сотен / тысяч объектов LiveData на карте - плохой дизайн и может также привести к проблемам с производительностью / слишком большому количеству открытых потоков внутреннего обратного вызова LiveData.
ПРЕДЛОЖЕНИЕ 3 :
Что-то еще ??? Я чувствую, что мне здесь чего-то не хватает. Как другие ищут объекты в своих LiveData, используя только свои primaryKey?
edit : это то, чего я хотел бы достичь на уровне Repo / Model, а не на уровне активности, так как эти LiveData будут повторно использоваться во всем приложении.