【问题标题】:Data Binding - How to write multi-line declarations?数据绑定 - 如何编写多行声明?
【发布时间】:2015-11-04 09:26:23
【问题描述】:

有没有办法用DataBinding库写多行代码?

我试过关注,但它抱怨 XML 格式

android:text="@{
            viewModel.subscriptionExpiration == null
                ? viewModel.field1
                : viewModel.field2
        }"

出现以下错误:Error:(80) Error parsing XML: not well-formed (invalid token)

单行替代作品,但我觉得它不太可读:

android:text="@{viewModel.subscriptionExpiration == null ? viewModel.field1 : viewModel.field2}"

【问题讨论】:

  • 运气好吗?我们也对此感兴趣。
  • @nAndroid 我仍然没有找到 DataBinding 的解决方案,但是您可以在下面查看我对这个问题的最新回答。

标签: android android-databinding


【解决方案1】:

我尝试进行一些挖掘,但找不到答案。我不知道您可以在 xml 中以这种方式分解字符串文字。作为替代方案,我建议将评估卸载到 viewModel,形式如下:

android:text="@{viewModel.subscriptionStatus}"

然后在你的 viewModel 类中

@Bindable
public String getSubscriptionStatus(){
    return getSubscriptionExpiration() == null
            ? getField1()
            : getField2();
}

【讨论】:

  • 如果我必须做一些与 UI 相关的事情怎么办?
  • 我建议将您的模型限制为对视图的状态进行建模。如果您需要处理点击或其他 ui 事件,您可以将 ViewDataBinding 传递给某种处理程序接口并让其处理 UI 事件。如果您需要从一个传递到另一个的数据,您也可以在绑定中指定它,因为您同时引用了处理程序和模型。它可能看起来像这样:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-16
  • 1970-01-01
  • 2016-02-07
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多