gpt4 book ai didi

android - 如何将 Kotlin 内联类与 Android 数据绑定(bind)集成?

转载 作者:行者123 更新时间:2023-12-02 12:59:03 25 4
gpt4 key购买 nike

引入 Kotlin inline class这是强类型别名。这在与数据库一起使用时很有用。例如,

inline class Age(val value: Int)
inline class Height(val value: Int)

当它们被写入数据库时​​,它们被编译为 Int 但 Kotlin 可以防止您不小心将 Height 放入 Age 字段中。如果您直接使用类型别名或 Int,则可以使用类型别名,但内联类会产生编译时错误。

但是,这些也会导致 Android 数据绑定(bind)出现问题。当我尝试将 String 内联类绑定(bind)到 String 属性时出现数据绑定(bind)错误

虽然可以编写一些类型的适配器来绕过它,但是它违背了使用内联类的目的,并且不适合为所有内联类创建适配器。

请问有什么优雅的方法可以解决这个问题吗?

最佳答案

首先您需要了解的是,内联类不仅仅是原始类型的包装器。它们不仅仅是类型别名。

现在来看你的例子,即使DataBinding有理解,如果你把任何 MutableLiveData<T> xml 中的实例,它将采用该特定变量的值(类似于 mutableLiveData.value )。但是如果你把 MutablLiveData<Age> , mutableLiveData.value将始终为 Age 类型但不要输入 Int .

请注意 inline class , 创建一个全新的类型而不仅仅是类型别名。

我相信您在数据绑定(bind)中不知何故需要一个方法,该方法返回内联类对象中包含的值。

关于android - 如何将 Kotlin 内联类与 Android 数据绑定(bind)集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54139949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com