Android:如何使用 dataBinding 在同一个 TextView 中显示多个值?

Posted

技术标签:

【中文标题】Android:如何使用 dataBinding 在同一个 TextView 中显示多个值?【英文标题】:Android: How to display multiple values in one and the same TextView using dataBinding? 【发布时间】:2020-07-31 06:57:13 【问题描述】:

大家好:我有 1 个 TextView 和 4 个不同的可点击按钮,用于获取我试图在该 TextView 中显示的数据。

因此,每次按下按钮时都应获取并显示数据。问题是,当我使用 dataBinding 时,我几乎“硬编码”了从 xml 中的“调用”获得的数据,如下所示:

android:text="@viewModel.triviaAnswer"

那么,ViewModel 中的其他值呢?如何在同一个TextView中显示?

我尝试了 xml 三元语句之类的,但它没有太大帮助,目前......

换句话说,这个想法是按下按钮 1,获取数据,显示它。按下按钮 2,获取数据并显示在同一个 textView 中。等等……我想以某种方式重用那个 TextView。

您将如何解决这个问题。我想最简单的事情就是为每个 onClick 调用设置一个不同的 textView 并在需要时隐藏/显示它们。

你能想到什么对这种情况有帮助吗?

非常感谢。

【问题讨论】:

在 viewmodel 中获取 string 的 livedata 并将其设置为 textview 。更新livedata的值,textview数据会自动刷新 谢谢,这很有道理!简洁明了! 【参考方案1】:

让您的按钮更改一个 ViewModel 变量 viewModel.triviaAnswer 的最简单和最好的方法就是这样

【讨论】:

感谢您的帮助!【参考方案2】:

最好的方法是重用您的 viewModel.triviaAnswer。假设它是一个字符串,然后将值分配给该字符串。例如,如果我单击 Button 1,viewModel.triviaAnswer 的 String 值将变为“One”,对于 Button 2,viewModel.triviaAnswer 将变为“Two”,依此类推...

【讨论】:

非常感谢。尽管上面的两个 cmets 都表示相同并且有道理,但一分钱一分钱一读你的就掉了。基本上,我们只需更新一个 viewModel 变量,将其绑定到 xml 中,而 LiveData 会负责其余的工作。再次感谢您!

以上是关于Android:如何使用 dataBinding 在同一个 TextView 中显示多个值?的主要内容,如果未能解决你的问题,请参考以下文章

Android - DataBinding - 如何以及何时生成绑定类?

Android,DataBinding的官方双向绑定

如何构建Android MVVM应用程序

Android11——DataBinding的使用

Android dataBinding 之 配合使用BaseAdapter适配器

ClassNotFoundException:没有找到类“android.databinding.DataBinderMapper”