Уведомление двух полей pojo с одинаковым именем Привязка данных - PullRequest
0 голосов
/ 29 октября 2018

Я начал пользоваться библиотекой привязки данных 2 месяца назад, и мне очень понравилось. Но я сталкиваюсь с проблемой. У меня есть, например, следующие 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)
    }
}

Так что, в основном, у меня есть POJO Car and Bike, которые имеют общее имя. У них обоих есть имя. Проблема в том, что у класса BR будет только один из них, он не генерирует префикс для класса. Я проверил это, и метод notifyPropertyChanged для одного из них не будет работать. Это действительно раздражает. Теперь я должен поставить префикс на обоих или на одном из них, чтобы они не совпадали. Это решает проблему, но затем класс Bike становится:

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

Это работает, но я, конечно, не хочу реализовывать свои модели подобным образом. Кто-нибудь знает, как это решить?

1 Ответ

0 голосов
/ 30 октября 2018

Вы можете использовать Kotlin Inheritance . У вас есть общие поля для обоих классов.

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

class Bike : Vehicle() {

}

class Car : Vehicle() {

}
...