gpt4 book ai didi

kotlin - 在同一ViewModel中对LiveData更改使用react

转载 作者:行者123 更新时间:2023-12-02 13:37:11 26 4
gpt4 key购买 nike

我有一个由其他ViewModel扩展的基本ViewModel:

abstract class BaseViewModel : ViewModel() {
protected val _state = MutableLiveData<Boolean>()
protected val state: LiveData<Boolean> = _state

...
}

每当 state更改(调用 _state.setValue(newvalue)_state.postValue(newvalue))时,我都希望能够使用react(例如,添加一条日志语句),并且我想在 BaseViewModel中进行操作。

我怎么做?

最佳答案

然后

protected val state: LiveData<Boolean> = _state 
state实际上应该是将 MediatorLiveData注册为其来源的 _state
final MediatorLiveData<T> mediator = new MediatorLiveData<>();
mediator.addSource(_state, new Observer<T>() {
@Override
public void onChanged(@Nullable T data) {
// log here
mediator.postValue(data);
}
});
return mediator;

因此,在您的情况下,应该这样:
protected val state: LiveData<Boolean> = MediatorLiveData().also { mediator ->
mediator.addSource(_state) { data ->
// log here
mediator.postValue(data)
}
}

关于kotlin - 在同一ViewModel中对LiveData更改使用react,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53804217/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com