Компоненты архитектуры Android

Я использую архитектуру Android MVVM для своего приложения.

Я хочу реализовать событие щелчка, поэтому нам нужно использовать компоненты архитектуры привязки данных или мы можем просто использовать активность для обработки события щелчка и проверки ввода пользователя?

Каков наилучший способ реализовать это?


person Harsh Shah    schedule 10.06.2019    source источник


Ответы (1)


Ну вопрос будет использовать Databinding или нет. Вот некоторые плюсы и минусы Databinding:

Плюсы:

  1. Делает код супер чистым.
  2. Делает код короче.
  3. Легко проверить.

Минусы:

  1. Иногда это трудно отладить.
  2. Это немного тяжело и увеличивает время компиляции.

Но... поскольку Google уже анонсировал его как часть компонентов архитектуры Android, я считаю, что вам следует его использовать.

Каков наилучший способ реализовать это?

Я не знаю, насколько вы знакомы с Databinding, но вы должны знать кое-что о Адаптеры привязки, и в onClick они вам не понадобятся. Просто добавьте атрибут android:onClick в файл XML. Также вы можете найти этот Codelab, чтобы правильно реализовать его:

https://codelabs.developers.google.com/codelabs/android-databinding/#0

Пример:

Прежде всего убедитесь, что у вас включен Databinding в вашем build.gradle

android {
...
    dataBinding {
       enabled true
    }
}

После этого перейдите к макету, который вы будете использовать привязку данных (и для этого убедитесь, что это будет Activity/Fragment), и просто введите ALT + TAB в свой IDE и чем...

После этого определите типы, например ViewModel и его имя. И в представлении, которое будет использовать функцию щелчка, добавьте то, что я сказал выше. (android:onClick="@{() -> viewmodel.onLike()}")

Вы не закончили. Вам каким-то образом нужно будет подключить свою логику к этой привязке данных, поэтому перейдите к своему коду Java/Kotlin для своего действия/фрагмента и:

Замените setContentView(R.layout.some_activity) на val binding : SomeActivityBinding = DataBindingUtil.setContentView(this, R.layout.some_activity)

Обратите внимание, что SomeActivityBinding будет предоставлено самой IDE, поскольку оно обрабатывается в библиотеке Databinding в соответствии с именами xml.

Это самое основное. Удачи.

person coroutineDispatcher    schedule 10.06.2019
comment
Я рад, что помог. - person coroutineDispatcher; 10.06.2019