Dentro de la actividad principal, no puedo llamar a getValue () en un atributo MutableLiveData de un ViewModel; sin embargo, puedo dentro de la clase ViewModel. ¿Cuál es la razón para esto?

Código de ejemplo: Actividad principal -

noodleViewModel = ViewModelProviders.of(this).get(NoodleViewModel.class);
        noodleViewModel.indexOfItemSelected.observe(this, index ->
            {
                Toast.makeText(this, String.format("This is the index: %d", index.intValue()), Toast.LENGTH_SHORT).show();

        );

Dentro de la clase ViewModel -

   public int getPosition() {
        return indexOfItemSelected.getValue();
    }
0
Justin 3724 9 oct. 2019 a las 05:26

1 respuesta

La mejor respuesta

Ya está observando su LiveData, por lo que el parámetro index de su lambda ya es el valor que está buscando

noodleViewModel.indexOfItemSelected.observe(this, index -> {
    index == noodleViewModel.indexOfItemSelected.getValue() // should return true
}
1
John Joe 9 oct. 2019 a las 02:53