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 之 配合使用BaseAdapter适配器
ClassNotFoundException:没有找到类“android.databinding.DataBinderMapper”