在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
...
答案 0 :(得分:0)
为此,您可以使用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添加到您需要的任何其他属性更改中。
答案 1 :(得分:0)
可能为时已晚,但您可以有两种选择
1-按照here
实现属性“ Aware” MutableLiveData2-每当属性更改时,将值设置为自身
indY <- rep(NA, nrow(dat)) # making an empty vector
# use for loop to fill each entry with either 0 or 1
for (i in 1:length(y)) {
if newy[i] == TRUE:
indY[i] == 1
else:
indY[i] == 0
}