и столкнулся со следующим вопросом. Где описывать такие элементы UI как кнопка вместе с onClickListener или text view и т.д?
Во Вью
имеешь в виду в xml файле?
Где хочешь
я вот вопрос понять не могу...
Именно в том активити или фрагменте )))который привязан к viewModel
ну вот смотри. есть приложение с MVVM архитектурой. Данные для вью берутся из интернета. в Мейн Активтити я просто подключаю viewModel, но где cеттить данные для View полученные в классе Repository не могу понять
Так в активити
в Activity / Fragment либо используй Databinding (для него в View метод onClick)
https://developer.android.com/topic/libraries/architecture/viewmodel
я +- понял наверное вопрос. Вот например ты включаешь приложение, у тебя грузиться mainActivity и у нее своя viewModel, и там ты прописываешь репозитории, где в ините (если это котлин) качаешь нужные данные (как то так)
Вот dataBinding плохой способ реализации.лучше не писать логику в xml от этого смысл теряется.вот заходиш в xml а там чисто отоброжение ничего более )))глазам приятно )))
обработку кликов через биндинги имеете ввиду?
ну тут на самом деле соглы на все 100%. Самый удобный и наглядный способ через setOnClickListener
В официальной документации к датабиндингу черным по белому (в светлой теме если читать) написано, что логику и не надо пихать в хмл, хоть и можно. Лучше пользоваться биндинг адаптерами.
Да я знаю, самому не нравится, но это не говорит, что такой подход не используется
потом делаешь для этого вручную биндинги во View, добавляешь Model и Presenter - вот тебе и MVP, глазам приятно.
Понимаю )))но людям которые будут использовать мой код после того как я впихну в xml логику не приятно будет заходит в xml)))
другое дело, что View может быть сразу xml, тут надо по ситуации смотреть
Можно в коде, можно в верстке. В верстке не все получится засетить, даже с помощью адаптеров (либо оно будет выглядеть сомнительно)
И где там логика и почему лучше там не писать? Ну и да, лучше делать фрагменты и Активити по тысячи строк, там же не нужно в них работать с жизненным циклом, инициализировать и инжектить зависимости, передавать и забирать данные через аргументы, а лучше ещё навигацию туда запихнуть
Кому как.
Так а зачем говорить что лучше или нет?
Обсуждают сегодня