Компоненты архитектуры Android - PullRequest
3 голосов
/ 10 июня 2019

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

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

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

1 Ответ

3 голосов
/ 10 июня 2019

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

Плюсы:

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

Минусы:

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

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

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

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

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

Пример:

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

включен Databinding.
android {
...
    dataBinding {
       enabled true
    }
}

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

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

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

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

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

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

...