Arquitectura

1

Patrones de Diseño en Android: Soluciones y Aplicación Práctica

2

Fundamentos de Arquitectura de Software y su Impacto en Proyectos

3

Arquitecturas en Android: MVC y MVVM

4

Desarrollo de una Billetera Virtual con Git y Android Studio

5

Arquitectura MVP: Modelo, Vista y Presentador en Desarrollo de Software

6

Arquitectura MVP: Implementación en Proyectos Android

7

Implementación de Arquitectura MVP en Android

8

Implementación de Loaders en Arquitectura MVP con Android

9

Arquitectura MVVM en Android: Comunicación entre Capas

Patrones de diseño

10

Patrones de Diseño en Android: Creacionales, Estructurales y Comportamiento

Patrones de diseño creacionales

11

Implementación del Patrón Singleton en Kotlin para Android

12

Patrón Singleton en Kotlin para Gestión de Estados en Android

13

Patrón Builder en Android: Creación de Objetos Complejos

14

Implementación del Patrón Builder en Clases de Usuario

15

Funciones de Alcance en Kotlin: Uso de Apply

16

Patrón Factory: Creación y Uso en Desarrollo de Software

Patrones de diseño estructurales

17

Patrón de Diseño Adaptador para Transformar Datos en Clases Java

18

Aplicación del Patrón Proxy en Transferencias Seguras

19

Patrón de Diseño Fast Add en Aplicaciones Android

Patrones de comportamiento

20

Patrones de Diseño: Implementación del Patrón Observer en Proyectos

21

Patrón Observer en Android: Implementación y Uso Práctico

22

Patrón Comando: Implementación y Gestión de Comandos en Kotlin

23

Comandos para Guardar y Leer Archivos en Android

24

Ejecución de Comandos y Debugging en Android Studio

Bonus: Architecture Components

25

Componentes de Android Jetpack para Mejora de Aplicaciones

26

Implementación de LiveData en Android para Ciclo de Vida

27

Implementación de Room en Android para Gestión de Base de Datos

28

Creación de Entidades y DAO en Base de Datos con Room en Kotlin

29

Conexión y manejo de transferencias en Room Database

30

Implementación de ViewModel en Arquitectura MVVM en Android

Bonus: Custom View

31

Creación de Vistas Personalizadas en Android con Custom View

Conclusiones

32

Patrones de Diseño y Componentes de Texto en Android

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Implementación de ViewModel en Arquitectura MVVM en Android

30/32
Recursos

¿Qué es el ciclo de vida en ViewModel y cómo se maneja?

El manejo del ciclo de vida en desarrollo de aplicaciones es crucial para evitar la pérdida de datos importantes, especialmente cuando ocurren eventos como rotaciones de pantalla. El modelo de arquitectura ViewModel en Android se encarga de gestionar estas situaciones al mantener el estado de las variables a pesar de los cambios de configuración. La clase ViewModel se integra en el ciclo de vida de las activities y fragments para proporcionar un manejo eficiente de los datos y del estado. ViewModel actúa como un intermediario entre los datos de la interfaz de usuario y la parte lógica del aplicativo.

¿Cómo se implementa ViewModel en Android?

Para implementar un ViewModel, primero debes crear una clase que extienda de ViewModel. En este contexto, puedes utilizar la librería Android Architecture Components, lo que te permitirá acceder a métodos como onCleared, que se llama cuando el ViewModel ya no es necesario y los datos deben ser liberados.

class LoanViewModel : ViewModel() {
    // Definición de variables LiveData
    private val _percentLiveData = MutableLiveData<Int>()
    val percentLiveData: LiveData<Int> get() = _percentLiveData

    private val _loansListLiveData = MutableLiveData<List<Loan>>()
    val loansListLiveData: LiveData<List<Loan>> get() = _loansListLiveData

    // Método para cambiar los valores
    fun changeValues() {
        _percentLiveData.value = 100
        _loansListLiveData.value = emptyList()
    }
}

¿Cómo conectar la vista con el ViewModel?

Una vez que tengas el ViewModel configurado, debes conectarlo con la interfaz de usuario o vista. Esto se realiza suscribiéndose a los objetos LiveData del ViewModel de modo que la vista pueda reaccionar a los cambios en los datos.

class LoanFragment : Fragment() {
    private lateinit var viewModel: LoanViewModel

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        viewModel = ViewModelProvider(this).get(LoanViewModel::class.java)

        // Observación de LiveData desde el ViewModel
        viewModel.percentLiveData.observe(viewLifecycleOwner, Observer { percent ->
            // Actualizar la UI con el nuevo porcentaje
            percentageTextView.text = "$percent%"
        })

        viewModel.loansListLiveData.observe(viewLifecycleOwner, Observer { loans ->
            // Actualizar los datos del adaptador
            adapter.submitList(loans)
        })

        return inflater.inflate(R.layout.fragment_loan, container, false)
    }
}

¿Cuáles son las ventajas de usar ViewModel?

  1. Persistencia durante el ciclo de vida: ViewModel conserva los datos del aplicativo durante cambios de configuración como la rotación de pantalla.

  2. Arquitectura limpia y desacoplada: Al separar la lógica de la UI del manejo de datos, ViewModel permite mantener una estructura de código más ordenada y fácil de mantener.

  3. Delegación eficiente: Se encarga de manejar eventos de la UI y actualizar solo cuando sea necesario.

  4. Seguridad en multihilo: Está diseñado para trabajar en estrecha colaboración con LiveData, lo cual garantiza notificaciones reactivas de cambios en los datos, lo que facilita el manejo concurrente de diferentes eventos de UI.

El empleo de ViewModel en la arquitectura de las aplicaciones Android es fundamental para quienes buscan eficiencia y organización en el desarrollo, garantizando aplicaciones robustas y adaptables a futuros cambios.

Aportes 7

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Recuerden agregar la dependencia de ViewModel en su archivo build.gradle de la app

implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"

ViewModel
Es una clase que nos ayuda a manejar el ciclo de vida de un contexto, dándonos sólo un método (onCleared()) donde deberíamos liberar recursos.


View esta suscrita a ViewModel, es decir que no necesitan contratos

En versiones recientes de Viewmodel, para inicializar una instancia a un ViewModel ya no es necesario utilizar el llamado a ViewModelProviders. Ahora podemos inicializar el ViewModel en la misma línea en la que lo declaramos:

class MainActivity: AppCompatActivity() {
	private val pushViewModel: PushViewModel by viewModels()
	...
}

Se diseñó la clase ViewModel a fin de almacenar y administrar datos relacionados con la IU de manera optimizada para los ciclos de vida. La clase ViewModel permite que los datos sobrevivan a cambios de configuración, como las rotaciones de pantallas.
Documentacion oficial de android: https://developer.android.com/topic/libraries/architecture/viewmodel#kotlin

Este es uno de los mejores cursos que eh visto ojala lo actualicen a jetpack
En lugar de declarar el view model como nulable mejor la inicializas de forma tardía con `lateinit var` De esta manera, evitas tener que realizar checkeos de variables nulas. Aún así, lo mejor es instanciar el view model dentro del cuerpo de la clase y no dentro del cuerpo de un método así: `private val pushViewModel: PushViewModel by viewModels()`