Android RecyclerView. Как правильно взять данные для элемента списка из нескольких источников?
У меня была коллекция определенных обьектов, которую я скармливал адаптеру. Адаптер расставлял нужные данные, которые которые хранились в этом обьекте в нужные места.
Теперь я расширяю возможности приложения. И мне надо отобразить в элементе RecyclerView данные, которые хранятся не только в одном обьекте определенного класса, коллекцию которых можно передать адаптеру, но и в другом, нов обьекте нового класса.
Объясню на примере: Ранее в элемементе ресайклера отображались поля "name" и "surname" из обьекта user класса User. Теперь мне в том же элементе ресайклера рядом надо поставить поле "orderName" из обьекта order класса Order
(User и Order также являются таблицами в БД. Я использую гугловскую библиотеку ROOM)
Проблема в том, что адаптер принимает только одну коллекцию определенных объектов.
Как правильно реализовать данную задачу? Может эта задача смахивает на какой-то паттерн или есть что-то, что повсеместно используют программисты (так как задача весьма типовая), а я не знаю
Для адаптера сделать новую модель (не ту, что берется из бд), которая будет агрегировать в себе все нужные данные. Маппить бдшные модели в гуишные в презентере или интеракторе.
Если я задаю такие вопросы и до этого работал с простенькими реализациями MVP. Нужно ли прямо сейчас идти изучать MVVM, LiveData чтобы данное приложение было создано по всем новым канонам, которые, наверное, являются best practice?
Как я понимаю, между User и Order есть связь, верно?
В таком случае вы можете передавать в адаптер не коллекцию пользователей, а коллекцию из объектов UserOrder (ну или придумайте название получше ;-) ), которые будут содержат в себе всю необходимую информацию.
Есть связь. ROOM позволяет делать так называемые Constraints, которые потом позволяют, например, удалить все ордеры связанные с юзером, если вдруг этого юзера удалят.