use*_*186 6 android mvvm android-databinding
我想使用LiveData切换TextView的可见性。还有其他几篇关于设置数据绑定的可见性的文章,但是这些文章使用Observables,而我想利用(较新的)LiveData。特别是,请使用LiveData。
使用该文档和一些SO帖子,我已经了解到您应该正确对齐可观察对象(LiveData)的吸气剂,以使返回类型与要设置的View属性的setter期望的类型匹配。特别:
利用这些见解,我在ViewModel类中定义了:
MutableLiveData<Boolean> textHintVisible;
Run Code Online (Sandbox Code Playgroud)
按下按钮后,将此值设置为False:
textHintVisible.postValue(false);
Run Code Online (Sandbox Code Playgroud)
(请注意,我也尝试过使用setValue())
然后,在我的布局XML中,我包括了:
<TextView
android:visibility="@{(safeUnbox(viewModel.textHintVisible) ? View.VISIBLE : View.GONE)}"
/>
Run Code Online (Sandbox Code Playgroud)
但是,我的TextView始终可见。为了调试,我在活动中添加了一个观察者,这确认我的布尔值正确地在true和false之间切换:
mHintsViewModel.getTextHintVisible().observe(this, new Observer<Boolean>() {
@Override
public void onChanged(@Nullable Boolean newInt) {
Log.i(TAG,"onChanged: "+newInt);
}
});
Run Code Online (Sandbox Code Playgroud)
但是我的TextView始终保持可见。我究竟做错了什么?为此不可能使用LiveData吗?我应该使用其他转换器吗?还是我的代码原则上是正确的,但这是Android Studio中的错误吗?任何帮助深表感谢。
| 归档时间: |
|
| 查看次数: |
3886 次 |
| 最近记录: |