Android DataBinding 在点击时更改其他 View 的字体

标签 android data-binding kotlin

我有一个过滤栏,它为每个字母(“A”、“B”、“C”...)显示一个单独的 TextView。我想实现这一点,当我用 A 单击 TextView 时,它会变成粗体,而所有其他 TextView 应该恢复为正常字体样式。如果我随后单击 CA(和所有其他)TextView 应该显示正常,“C”应该显示粗体。
有没有一种有效的方法可以通过数据绑定(bind)来解决这个问题?我想避免为每个文本字段编写 LiveData 属性。

最佳答案

只需创建一个 ObservableField<>selectedIdselectedText在你的 viewModel 中的 View 中,还在 viewModel 中添加一个方法 changeSelectedValue并直接从 xml onClick 向其传递 View .

接下来,您必须创建自定义绑定(bind)适配器,它将接受您的 ObservableField<>selectedIdselectedText , 并将检查该值是否与自身相同。

所以一切都可以通过数据绑定(bind)来完成。您需要一些代码示例吗?

关于Android DataBinding 在点击时更改其他 View 的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52536791/

相关文章:

android - 如何改变ImageView中触摸区域的颜色?

android - 如何在 Android 上的 Xamarin.Forms 中的 NavigationBar 左侧添加 ToolbarItem?

android - 如何用编辑文本实现快速搜索功能

java - spring-mvc中抽象类的数据绑定(bind)

android - 在移动到下一个 Activity 之前完整地运行一个函数

kotlin - 使用挂起函数混淆内部类后的 ClassCastException

java - FirebaseRecyclerView 无法在 fragment 内工作

c# - WPF - 从 DataTemplate 创建 UI 对象

wpf - 将 ListViewItem ContextMenu MenuItem 命令绑定(bind)到 ListView 的 ItemsSource 的 ViewModel

android - Kotlin 将对象转换为另一个对象