我需要能够拦截MutableLiveData中的更改,该更改在双向数据绑定中用于创建新用户。之所以需要拦截MutableLiveData中的发射(变化),是因为我想不断更新模型对象。
(在视图模型中)我能想到的最好的方法是
private MediatorLiveData<String> name = new MediatorLiveData<>();
name.addSource(name, n -> getModel().setName(n));
然后将其作为MutableLiveData公开给视图,以允许使用EditText进行双向数据绑定。
public MutableLiveData<String> getName() {
return name;
}
现在,它确实按预期工作,也许是一个很好的解决方案。但是,有人能解释使用此解决方案与其他可能解决方案相比的缺点吗?基本上,这只是一个可怕的骇客,还是应该以这种方式使用?如果不是,那么如何才能更好地做到这一点?