通知两个具有相同名称数据绑定的pojo字段

时间:2018-10-29 20:16:34

标签: android android-databinding

两个月前,我开始使用数据绑定库,并且非常喜欢它。但是我遇到了一个问题。例如,我有以下POJO:

Car{
    @Bindable
    var name: String
    @Bindable
    set(value){
        field = value
        notifyPropertyChanged(BR.name)
    }
}

Bike{
    @Bindable
    var name: String
    @Bindable
    set(value){
        field = value
        notifyPropertyChanged(BR.name)
    }
}

所以基本上我有一个共享属性名称的Car and Bike POJO。他们都有名字。问题在于BR类仅包含其中一个,它不会为该类生成前缀。我对此进行了测试,其中的一个的notifyPropertyChanged方法将不起作用。 真烦人。现在,我必须在两者或其中之一上加上前缀,以使它们不匹配。这样可以解决问题,但是Bike类变为:

Bike{
    @Bindable
    var bikeName: String
    @Bindable
    set(value){
        field = value
        notifyPropertyChanged(BR.bikeName)
    }
}

这可行,但是我当然不想实现这样的模型。知道如何解决这个问题的人吗?

1 个答案:

答案 0 :(得分:0)

您可以使用Kotlin Inheritance。这两个类都有相同的字段。

open class Vehicle : BaseObservable() {
    @Bindable
    var name: String = ""
        @Bindable
        set(value) {
            field = value
            notifyPropertyChanged(BR.name)
        }
}

class Bike : Vehicle() {

}

class Car : Vehicle() {

}