@Bindable не генерирует поле в классе BR - PullRequest
0 голосов
/ 15 апреля 2019

Мне нужно получать уведомление при изменении поля.Согласно документации Android, Bindable-аннотация создаст поле в классе BR.(https://developer.android.com/reference/android/databinding/Bindable), но после назначения аннотации @Bindable для поля я не вижу ни одного поля, созданного для этого в классе BR.

Я очищаю и перестраиваю проект. Но никаких преимуществ. Даже я лишаю законной силыкеш и перезагрузка. но ничего

это мой класс Java

class Job : BaseObservable(), Serializable {

    @SerializedName("id")
    var id: Int = 0

    @SerializedName("title")
    var title: String = ""

    @SerializedName("is_requested")
    var isRequested: Boolean = false
        @Bindable get
        set(value) {
            field = value
            notifyPropertyChanged(BR.requested)
        }

}

, но у меня есть ошибка. BR.requested неизвестно ...

и это г-н BRкласс, который автоматически сгенерировал

public class BR {
  public static final int _all = 0;

  public static final int company = 1;

  public static final int jobExperience = 2;

  public static final int job = 3;

  public static final int educationHistory = 4;

  public static final int user = 5;

  public static final int userLanguage = 6;
}

, как вы видите, нет соответствующего поля для поля isRequested Job.kt в классе BR.

Ответы [ 2 ]

1 голос
/ 12 июня 2019

Обратите внимание, что вам нужно применить плагин kotlin-kapt.

Этот ответ может быть полезен

https://stackoverflow.com/a/54197326/1944237

0 голосов
/ 15 апреля 2019

Заменить

 @SerializedName("is_requested")
  var isRequested: Boolean = false
  @Bindable get

Кому:

 @SerializedName("is_requested")
var isRequested: Boolean
    @Bindable get() = isRequested
    set(value) {
        isRequested = value
        notifyPropertyChanged(BR.isRequested)
    }

Нет необходимости в методе set и get. вы можете получить к нему доступ по умолчанию.

...