【问题标题】:Easy way to combine string resources with databinding将字符串资源与数据绑定相结合的简单方法
【发布时间】:2017-10-28 12:18:59
【问题描述】:

我可以使用字符串资源通过以下方式在我的EditText 中初始化文本:

android:text="@string/my_text"

这就是我将如何使用两种方式数据绑定

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

问题是如何结合上述方法(如果可能的话)以便使用“@string/my_text”初始化 EditText 并同时受益于两种数据绑定?基本上我正在寻找类似下面的东西(但它只在预览中有效,而不是在应用程序中):

android:text="@={viewModel.myText, default=@string/my_text}"

我知道我可以使用第二种方法并在 ViewModel 中初始化 myText,这将被传播到视图,但我想知道是否可以仅在 xml 中实现?

在我看来,好处是 ViewModel 不必知道字符串资源。

【问题讨论】:

  • 有什么解决办法吗?
  • @kgandroid 很遗憾没有

标签: java android data-binding


【解决方案1】:

我们在ViewModel代码后面的项目中处理的方式:

  • 在 ViewModel 中将默认文本设置为“myText”,
  • 每当我们需要更新值时,调用:

    public void setPassword(字符串密码) { this.password = 密码; notifyPropertyChanged(BR.passwordQuality); }

希望这会有所帮助。

谢谢。

【讨论】:

  • 第一件事是您可能正在使用“@{viewModel.myText}”的单向数据绑定。我使用“@={viewModel.myText}”的两种方式数据绑定,所以我不需要手动调用 notifyPropertyChanged。第二件事是我知道我可以在 ViewModel 中将默认文本设置为“myText”,但是我的默认文本位于 @string 资源中,为了获得它,我必须从 ViewModel 访问上下文,我想避免这种情况。
猜你喜欢
  • 2016-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-13
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多