2017-04-18 54 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