2017-05-15 57 views
4

是否可以通過枚舉創建數據綁定表達式並控制視圖元素的可見性?我想實現的是以下Android:使用枚舉比較的數據綁定表達式

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:visibility="@{user.editType == EditType.EDIT_PROFIL ? View.VISIBLE : View.GONE}"> 

的EditType類是非常簡單的

public enum EditType { 
    NONE, 
    EDIT_PROFIL, 
    EDIT_ADDRESSES; } 

這將是真棒,如果我可以使用XML中此枚舉來控制我的LinearLayout的知名度。

有人知道如何做到這一點?

回答

10

對我來說,似乎你想要實現的是可能的,我沒有看到任何錯誤,除了可能你缺乏標籤?我沒有看到它...

<data> 
<import type="com.example.my.app.EditType"/> 
</data> 
-3

你可以這樣做是Java代碼,而不是xml。

public enum EditType { 
NONE, 
EDIT_PROFIL, 
EDIT_ADDRESSES; } 

LinearLayout ll = (LinearLayout) findViewById(R.id.ll); 
if(user.editType == EditType.EDIT_PROFIL){ 
    ll.setVisibility(View.VISIBLE); 
}else{ 
    ll.setVisibility(View.GONE); 
} 
0

我會建議你從UI中分離邏輯。所有可見性的邏輯都應該在不同事件的java代碼中完成。如果在Activity/Fragment的OnCreate()方法上實現,我會說@Demo_Mail建議可以工作,但讀取數據綁定標記表明我想要在運行的任何時候動態地執行此操作(糾正我if我錯了)。在這種情況下,我會建議創建一個OnClick()或OnSelectItem()方法,該方法在用戶選擇enum的值時(例如在組合框中)執行。此方法將設置視圖的可見性。

+0

不是動態的。在onCreate的開始,我曾經設置了數據綁定資源,並且這個我想控制可見性。如果我可以在xml中使用枚舉,它將更具可讀性。否則,我必須引用我的代碼中的每個LinearLayout ...:D – jennymo

+0

對我來說,似乎你想要實現的是可能的,除了可能缺少標記,我沒有看到任何錯誤?我沒有看到它... <進口TYPE = 「com.example.my.app.EditType」/> Shohn

+0

大謝謝:)的<進口TYPE =「com.example.my.app .EditType「/>行就行。如果你張貼這個答案,我會將其標記爲正確的解決方案,你會得到一些聲譽:) – jennymo