Enlace de datos con LiveData en Android

Requisito previo:

Entonces, ¿por qué estamos usando el enlace de datos con LiveData? En realidad, si queremos que nuestras vistas se comuniquen directamente con ViewModel (fuente de datos), podemos hacerlo simplemente sin usar LiveData. Pero si los datos cambian en ViewModel, no reflejará su vista. Aquí es donde podemos tomar la ayuda de LiveData, para actualizar automáticamente la vista cada vez que haya algún cambio en los datos.

Implementación

Necesitamos declarar los datos en ViewModel como LiveData. Podemos usar MutableLiveData (más comúnmente), es solo una clase que extiende LiveData.

Kotlin

class MainViewModel : ViewModel() {
    var text = MutableLiveData(" Welcome to my application ")
  
    fun updateText() {
        text.value = " Text is updated successfully "
    }
}
  • Podemos usar un método value() para actualizar los datos (debe llamarse desde el subproceso principal si está llamando desde el subproceso en segundo plano, necesita usar el método postValue() ).
  • Normalmente usamos el observador() para vincular la vista y LiveData, pero aquí, como estamos usando el enlace de datos en el que vinculamos directamente las vistas con los datos, no necesitamos un observador().
  • Una cosa a tener en cuenta es que, como necesitamos dar LifeCycleOwner a LiveData, estábamos pasando LifeCycleOwner a Observer().
  • Pero aquí también podemos pasar LifeCycleOwner al objeto Binding usando el método lifecycleOwner() .

Kotlin

class MainActivity : AppCompatActivity() {
  
    lateinit var binding: ActivityMainBinding
    lateinit var mainViewModel: MainViewModel
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
  
        // Creating MainViewModel object
        mainViewModel = MainViewModel()
  
        // Binding mainViewModel variable 
        // with MainViewModel object
        binding.mainViewModel = mainViewModel 
        
        // passing LifeCycleOwner to binding object
        binding.lifecycleOwner = this 
    }
}

Producción:

Text view is initialized with some text.

Después de hacer clic en el botón ACTUALIZAR TEXTO.

Conclusión

  • Como podemos ver, cuando la aplicación está abierta, la Vista de texto está configurada de forma predeterminada.
  • Y cuando hacemos clic en el botón ACTUALIZAR TEXTO, la Vista de texto se actualiza.
  • Entonces nuestra aplicación está lista y funcionando correctamente.
  • Hemos implementado el enlace de datos utilizando ViewModel y LiveData.

Publicación traducida automáticamente

Artículo escrito por ayushpandey3july y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *