MVVM en Android con architecture components

MVVM es un patrón de arquitectura que nos permite enlazar las vistas con nuestros modelos e interactuar más fácilmente con la UI, separando la capa lógica con las vistas.


El ViewModel se encargará de gestionar toda la lógica y reglas de negocio y proveerá a la vista los bindings necesarios para interactuar entre ellos.

Lo primero que debemos hacer es instalar la librería lifecycle components y habilitar el data binding, todo esto en el archivo build.gradle.



Posteriormente debemos crear nuestro modelo y ViewModel, el cual extiende de BaseObserver, clase que nos proporciona lo necesario para notificar que una propiedad cambió con el método notifyPropertyChanged.

El data annotation @Bindable nos ayuda a exponer y permite que una propiedad pueda ser enlazada en la UI.

NOTA: La clase BR es auto generada después de usar el data annotation en nuestras propiedades y compilar el proyecto.





Al generar nuestro Activity Layout, el elemento raíz tiene que ser de tipo layout y definimos la variable de nuestro ViewModel que nos permitirá enlazar las propiedades.

Los dos bindings utilizados en esta sección son OneWay y TwoWay.

  • OneWay: la propiedad solo va del origen al destino. Por ejemplo Text=”@{viewModel.Property}”
  • TwoWay: la propiedad va del origen al destino y viceversa. Por ejemplo Text=”@={viewModel.Property}”




En la activity creamos el BindingAdapter, el cuál se ejecutará cuando la propiedad isSuccess cambie. En vez de asignar el ViewModel al método setContentView que provee AppCompactActivity lo asignamos a través de DataBindingUtil, la clase ActivityLoginBinding es autogenerada después de crear el layout y compilar el proyecto.



Comentarios

Entradas populares de este blog

Instalar Kotlin en Windows

Inyección de dependencias en Xamarin Forms con Autofac

Construye aplicaciones nativas multiplataforma con Xamarin