LiveData update on object field change

后端 未结 5 1698
渐次进展
渐次进展 2020-11-27 12:49

I\'m using Android MVVM architecture with LiveData. I have an object like this

public class User {
    private String firstName;
    private String lastName;         


        
5条回答
  •  我在风中等你
    2020-11-27 13:10

    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
    });
    

提交回复
热议问题