是否可以根据来自相同XML的值显示/隐藏视图?
我不想为java文件写很多条件。
我的意思是;如果we can do this
<TextView android:text="@{user.lastName}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="@{user.isAdult ? View.VISIBLE : View.GONE}"/>
我们应该能够做到这一点吗?
android:visibility="@{idOfMySwitch.isSelected() ? View.VISIBLE : View.GONE}"/>
如果是这样我该怎么办?
答案 0 :(得分:0)
您应该检查视图模型的状态以确定是否显示该元素。
在ViewModel中:
@Bindable
public boolean isAdult() {
return isAdult;
}
在您的活动中,您应该在交换机上有一个on click侦听器,相应地更新ViewModel上的isAdult,这将反过来更新textview的可见性。
您可以看到类似的示例here。
答案 1 :(得分:0)
你不能这样做。 idOfMySwitch.isSelected()
对于数据绑定本身是不可观察的。
对于这种情况,我有一个持有人,并将其指定为对开关的双向绑定和可见性的一种方式。
对于选择,您可能会遇到问题。双向绑定不是,或者至少不容易实现。但是使用开关你可能还是想要使用已检查的状态。
<Switch ...
android:checked="@={holder.myState}" />
<TextView ...
android:visibility="@{holder.myState ? View.VISIBLE : View.GONE}" />