Android 数据绑定和 LiveData:无法绑定到 LiveData 中的值 属性

Android databinding and LiveData: Can't bind to value in LiveData property

我正在尝试对一个视图进行数据绑定,该视图应该显示通过视图模型中的 LiveData 属性 公开的数据,但我找不到将 LiveData 内的对象绑定到视图的方法。从 XML 我只能访问 LiveData 实例的值 属性,但不能访问其中的对象。我是不是遗漏了什么或者不可能?

我的视图模型:

class TaskViewModel @Inject
internal constructor(private val taskInteractor: taskInteractor)
    : ViewModel(), TaskContract.ViewModel {

    override val selected = MutableLiveData<Task>()
    val task: LiveData<Task> = Transformations.switchMap(
        selected
    ) { item ->
        taskInteractor
            .getTaskLiveData(item.task.UID)
    }
    ... left out for breivety ... 
}

我试图在我的视图中绑定任务对象的值,但是当我试图在我的视图中设置我的任务的值时,我只能做 android:text="@={viewmodel.task.value}"。我无权访问我的任务对象的字段。在 LiveData 对象中提取对象值的技巧是什么?

我的任务class:

@Entity(tableName = "tasks")
data class Task(val id: String, 
                val title: String, 
                val description: String?, 
                created: Date, 
                updated: Date, 
                assigned: String?)

为什么要对 TextView 使用两种方式绑定 android:text="@={viewmodel.task.value}" 而是像这样使用 android:text="@{viewmodel.task.title}"

为了 LiveData 使用 Android 数据绑定 ,您必须为绑定

设置 LifecycleOwner
binding.setLifecycleOwner(this)

并像使用 ObservableField

一样使用 LiveData
android:text="@{viewmodel.task}"

要实现此功能,Task 需要实施 CharSequence。使用 viewmodel.task.toString() 也可能有效。要实现双向绑定,您必须改用 MutableLiveData