понял, что Adapter вообще не должен иметь никаких ссылок на части архитектуры: Presenter, ViewModel, Activity, Fragment, Router и т.д. Если нужен обработчик события, то нужно передать колбек.
Допустим, архитектура MVVM, и если требуется перенаправить на другой экран по клику на элемент адаптера, то мы должны во ViewModel (внутри него есть объект Router) создать колбек, и передать адаптеру. Должен ли Adapter находиться во ViewModel?
И правильно ли нахождение Router внутри него?
Как вы организуете свою архитектуру, используя MVVM?
terminator-light, во-первых, я его не поменял, это ты неверно интерпретируешь.
Вопросы вообще о разном. Адаптер имеет право содержать ссылку на активити, ему надо откуда-то достать ресурсы для отображения(стринги, дроваблы, например. Активити как контекст может быть нужна для создания самой вьюхи и так далее).
Должен ли адаптер делать что-то ещё, кроме создания вьюхи и биндинга - нет, не должен. В биндинг также входит прокидывание событий(таких, как кликов). Это SOLID. Должен ли адаптер кастовать активити к конкретному MyActionListener? Нет, не должен, он должен принимать активити и этот листенер, даже если эта активити реализует этот листенер. Это SOLID.
Адаптер ресайклера - это чисто вьюшная штука, к архитектуре как таковой она отношения не имеет вообще. Ты должен дать ей коллбек, который она дернет при наступлении события. Дальше там роутер не роутер - ей без разницы.
Денис Загаевский, Следовательно, Adapter, т.к. вьюшная структура, ко ViewModel отношения не имеет. И должен находиться только во View.
Теперь стало более-менее понятно. По поводу Router, в MVP хоть даже Router не определен, его принято держать в Presenter. Следовательно, в MVVM он должен находиться во ViewModel?