I\'m using Android MVVM architecture with LiveData. I have an object like this
public class User {
private String firstName;
private String lastName;
For your observer get notified you should use setValue if you do this
user.getValue().setFirstName(user.getValue().getFirstName() + " A "); your observer will not be notified !
View Model
public MutableLiveData getUser() {
return user;
}
Activity / Fragment
mModel = ViewModelProviders.of(this).get(InfoViewModel.class);
mModel.getUser().observe(this, s -> {
// User has been modified
});
Somewhere in your activity / fragment
This will trigger the observer :
mModel.getUser().setValue(user);
If you want to update only one field from an object instead of update the whole object you should have multiples MutableLiveData
// View Model
private MutableLiveData firstName;
private MutableLiveData lastName;
//Somewhere in your code
mModel.getFirstName().setValue(user.getValue().getFirstName() + " A ");
mModel.getFirstName().observe(this, s -> {
// Firstname has been modified
});