2017-04-18 60 views
0

是否可以根据来自同一个XML的值显示/隐藏视图?Android是否可以使用视图变量显示/隐藏视图

我不想写很多条件到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

你不能这样做。数据绑定本身不可观察到idOfMySwitch.isSelected()

对于这种情况,我有一个持有者,并将其作为一个双向绑定到交换机和一种可见性的方式。

对于选择,您可能会遇到问题。双向绑定不是,或者至少不容易实现。但是对于一个开关,您可能想要使用选中的状态。

<Switch ... 
    android:checked="@={holder.myState}" /> 
<TextView ... 
    android:visibility="@{holder.myState ? View.VISIBLE : View.GONE}" /> 
0

您应该检查视图模型的状态以确定是否显示该元素。

在您的视图模型:

@Bindable 
public boolean isAdult() { 
    return isAdult; 
} 

在你的活动,你应该有一个上点击监听器,因此在视图模型更新isAdult开关,这将反过来更新您的TextView的可视性。

你可以看到一个类似的例子here