在 Android 项目中,根据开发人员指南成功实现了 Android 架构组件,但问题是我们可以使用 LiveData 观察完整的对象变化
mQueViewModel.getLiveQuestion().observe(this, new Observer<Question>() {
@Override
public void onChanged(@Nullable Question question) {
Log.i(TAG, "onChanged: ");
setQuestionDetails();
}
});
任何单个对象属性更改都会触发 OnChanged
这会导致将所有数据再次设置到 UI 那么有什么方法可以实现属性更改,例如 onDescriptionChange
、onImageChange
...
最佳答案
为此,您可以使用 ViewModel 将数据分成更小的部分。这样的事情应该有效:
private LiveData<Question> questions;
private MediatorLiveData<String> description;
public MQueViewModel() {
description = new MediatorLiveData<>();
description.addSource(questions, new Observer<Question>() {
@Override
public void onChanged(@Nullable Question question) {
if (question == null) return;
if (!question.description.equals(description.getValue())) {
description.setValue(question.description);
}
}
});
}
然后让您的 UI 订阅 description
。将类似的 MediatorLiveData 添加到您需要的任何其他属性更改。
关于android - 实时数据观察对象单一属性变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47378448/