Entradas

Mostrando las entradas etiquetadas como Architecture

MVVM en Android con architecture components

Imagen
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 q...

Inyección de dependencias en Xamarin Forms con Autofac

Imagen
La inyección de dependencias es un patrón de diseño, el cual provee los objetos requeridos por una clase, en vez de que la misma clase los gestione. Esto nos ayudaría a cumplir uno de los principios de SOLID que es Dependency inversion principle . Es una manera de tener el software de manera modular. Un injector nos provee de las los objetos instanciados de los servicios requeridos por un cliente. En Xamarin Forms lo podemos integrar para gestionar las dependencias nativas (Dependency Service), ViewModels y Servicios. Lo primero que debemos hacer es instalar el Nuget de Autofac , librería que nos provee de un contenedor que se encargará de cumplir la tarea del Injector. Posteriormente deberemos crear nuestros servicios y dependencias nativas que se inyectarán en el constructor de nuestro ViewModel. En este caso AppInformation y LoggerService . NOTA: La mejor práctica es inyectar una interface, ya que esto nos permitirá realizar un Mock en las pruebas un...

Patrón ViewHolder en Android

Imagen
El uso de listas en las apps es una buena opción al momento de mostrar información, solo hay que analizar la aplicación de twitter para darnos cuenta que cada tweet es un elemento de una lista, solo por mencionar un ejemplo de las muchas aplicaciones que lo implementan. Cuando nosotros vemos una lista renderizada en Android significa que solo ha sido creada la parte que visualizamos, cuando realizamos un scroll down se van creando los nuevos elementos que se van a mostrar. Cada que creamos un nuevo elemento debemos buscar elemento de nuestro Layout al que le vamos a realizar el Bind de los datos, esto lo hacemos con el método findViewById, esta función puede parecer simple pero si tomamos en cuenta que podemos tener una lista muy grande entonces se convierte en un tema de performance que puede afectar el rendimiento de la aplicación. Para esto con el patrón ViewHolder, crearemos una clase que contenga los elementos que vamos a enlazar con los datos y en el método sobrescri...

Patrón MVP en Android

Imagen
Los patrones de diseño son estructuras de código estrictas, pretenden solucionar problemas de performance, diseño, seguridad etc. Una buena práctica para nuestros proyectos es aplicar patrones de diseño, estos no ayudan a reducir errores, tener código más limpio y mantenible entre otras cosas. Para cada tecnología hay diferentes patrones que cubren distintas necesidades.. Uno de los patrones de diseño más conocido en Android es MVP (Model-View-Presenter), que divide el código en tres capas. Model: Estructura que representa nuestros datos. View: Son las activities solo se deben encargar de actualizar los datos notificados por el Presenter y todo lo relacionado con la UI. Presenter: Tiene toda la lógica de negocio y no debe incluir ninguna librería android, se encargará de notificar a la vista cuando algo cambie. En el siguiente ejemplo en nuestro View tendremos un simple formulario para guardar los datos de una persona y un contador de personas almacenadas, es...