Привязка данных BR не показывает все имена переменных

Я реализовал DataBinding с шаблоном MVVM, вот мой класс ViewModel.

public class MainViewModel extends BaseObservable {
    private String data, data1;

    @Bindable
    public String getData1() {
        return data1;
    }

    public void setData1(String data1) {
        this.data1 = data1;
    }

    @Bindable
    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
        notifyPropertyChanged(BR.data);
    }
}

теперь проблема в том, что я вижу там BR.data, но не могу получить BR.data1, как использовать notifyPropertyChanged() для переменной data1.

Я пытался очистить проект, также пытался перестроить его, но мне это не помогло.

Вот мой файл build.gradle

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    dataBinding {
        enabled = true
    }

    defaultConfig {
        ...
        ...
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'

}

person Ravi    schedule 29.11.2016    source источник
comment
Вы можете опубликовать свой gradle файл? и один раз попробовать Invalidate Caches and Restart.   -  person Harshad Pansuriya    schedule 29.11.2016
comment
посетите это: stackoverflow .com/questions/30776466/   -  person Harshad Pansuriya    schedule 29.11.2016
comment
Но это касается класса BR, у меня нет ошибок с классом BR, он просто не показывает все переменные. Тем не менее, позвольте мне попробовать с Invalidate Caches and Restart   -  person Ravi    schedule 29.11.2016
comment
вы пытались использовать BR.data1, чтобы увидеть, компилируется ли он. (может баг студии)   -  person yigit    schedule 29.11.2016
comment
@yigit да, это работает, я думаю, это ошибка студии   -  person Ravi    schedule 29.11.2016
comment
Не могли бы вы добавить ответ на это? Класс BR тоже доставляет мне много хлопот. Больше, чем другие ресурсы, созданные apt.   -  person tynn    schedule 29.11.2016


Ответы (4)


Поскольку AndroidX здесь

Итак, все, что вам нужно сделать, чтобы изменить импорт из

import your_package_name.BR

с кодом ниже

import androidx.databinding.library.baseAdapters.BR

Также проверьте новую версию библиотеки жизненного цикла.

implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
person Suraj Gupta    schedule 21.09.2019

Я нашел несколько способов решить эту проблему.

1) Попробуйте использовать Invalidate caches and restart в студии Android.
2) Как yigit упомянули, что это ошибка студии Android, вы можете напрямую использовать переменную вместо того, чтобы ждать, пока имя переменной появится в качестве предложения.

person Ravi    schedule 06.12.2016

Я могу подтвердить, что работает @jee. Однако при использовании androidx оператор импорта изменится на:

import androidx.databinding.library.baseAdapters.BR

Invalidate не нужен на 100%. Я только что очистил и перестроил, чтобы мои ссылки снова работали.

Я уверен, что это ошибка Studio, поскольку @yigit упомянуто, но нигде нет отчетов об ошибках, подтверждающих это.

person Pieter van der Vyver    schedule 20.09.2019

Я пробовал следующее, и теперь он работает:

1. Измените импорт BR на import com.android.databinding.library.baseAdapters.BR;

2.file->аннулировать кэш/перезапустить

person jee    schedule 11.09.2019