将值两次设置为可变实时数据仅触发一次onChangedCallback

时间:2019-06-23 01:17:02

标签: android mvvm android-livedata

我正在调用viewModel中的方法以在我的可变实时数据上设置数据,如下所示,并且它们被依次调用,如下所示:

    viewModel.onCountrySelected(country);
    viewModel.onLanguageSelected(language);

然后在视图模型中,将我设置的数据设置为可变实时数据,这是我在片段中观察到的。我的视图模型中的方法如下:

public void onLanguageSelected(int type) {
    clickType.setValue(type);

}

public void onCountrySelected(int type) {
    clickType.setValue(type);
}

clickType是我的Mutable Live数据。现在的问题是,我的onChanged仅被调用一次,并且也仅针对我在clickType上设置的最后一个值被调用。

如果我没记错,我应该两次触发onChanged,因为我在clickType上设置了两次值。

private void initLiveData()
{
    clickType = new MutableLiveData<>();
    clickType.setValue(0);
}

initLiveData是我初始化MutableLiveData的地方。同样,我在将veiwModel变量设置为布局后调用了initLiveData。

在片段中:

binding.setViewModel(viewModel);
viewModel.initLiveData()


   viewModel.getClickType().observe(this, new Observer<Integer>() {
        @Override
        public void onChanged(@Nullable Integer type) {

            handleClicks(type);
        }
    });

0 个答案:

没有答案