En este momento, estoy siguiendo un tutorial en el que estoy desarrollando una aplicación de juego simple que intenta comprender y usar la arquitectura de la aplicación MVVM. En mi clase ViewModel tengo un campo que contiene la puntuación del jugador.
La variable de puntuación se declara así:
private val _score = MutableLiveData<Int>() val score: LiveData<Int> get() = _scoreAhora, en mi clase de controlador de interfaz de usuario, observo la puntuación de esta manera:
viewModel.score.observe(this, Observer { newScore -> binding.scoreText.text = newScore.toString() })Entonces, mi pregunta es ¿por qué necesito la segunda declaración de puntuación? ¿No puedo simplemente tener un
val score = MutableLiveData<Int>()y observarlo como arriba? Probé y funciona.
Funcionará. El objetivo de hacer eso es asegurarse de que los cambios en esa variable solo ocurran desde un lugar, siendo su ViewModel. Es solo un patrón que la gente ha seguido para facilitarle la depuración y asegurarse de que el estado de su aplicación/vista sea correcto. Una fuente de Google que encontré aquí, aunque estoy seguro de que hay muchas más