【问题标题】:Android: Databinding expression with enum comparisonAndroid:具有枚举比较的数据绑定表达式
【发布时间】:2017-10-14 00:41:47
【问题描述】:

是否可以通过使用枚举来创建数据绑定表达式并控制视图元素的可见性?我想要实现的是以下

<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 的可见性,那就太棒了。

有人知道如何实现这一点吗?

【问题讨论】:

    标签: android data-binding enums


    【解决方案1】:

    对我来说,您想要实现的目标似乎是可能的,除了您可能缺少标签之外,我没有发现任何问题?没看到。。。

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

    【讨论】:

      【解决方案2】:

      我建议您将逻辑与 UI 分开。可见性的所有逻辑都应该在不同事件的 java 代码中完成。我会说如果在您的 Activity/Fragment 的 OnCreate() 方法上实现类似@Demo_Mail 建议的内容会起作用,但读取数据绑定标签表明您希望在运行中的任何时候动态地执行此操作(如果我错了)。在这种情况下,我建议创建一个 OnClick() 或 OnSelectItem() 方法,该方法将在用户选择枚举值时执行(例如在组合框中)。此方法将设置视图的可见性。

      【讨论】:

      • 不是动态的。在 onCreate 开始时,我曾经设置过数据绑定资源,因此我想控制可见性。如果我可以在 xml 中使用枚举,它将更具可读性。否则我必须在我的代码中引用每个 LinearLayout ...:D
      • 对我来说,您想要实现的目标似乎是可能的,除了您可能缺少 标签之外,我没有发现任何问题?我没看到...
      • 非常感谢 :) 行可以解决问题。如果您将此作为答案发布,我会将其标记为正确的解决方案,您将获得一些声誉:)
      猜你喜欢
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      • 1970-01-01
      • 2013-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多