数据绑定BR未显示所有变量名称

时间:2016-11-29 06:42:15

标签: android data-binding android-databinding android-mvvm

我已经使用MVVM模式实现了DataBinding,这是我的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'

}

4 个答案:

答案 0 :(得分:5)

因为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"

答案 1 :(得分:3)

我找到了解决这个问题的方法。

1)在android studio中尝试使用Invalidate caches and restart 2)正如yigit所提到的,它是android studio bug,你可以直接使用变量而不是等待变量名来作为建议。

答案 2 :(得分:1)

我尝试了以下操作,并且现在可以正常工作:

1。 将BR的导入更改为 导入com.android.databinding.library.baseAdapters.BR;

2.file->使cahces /重启无效

答案 3 :(得分:1)

我可以确认@jee的状态有效。 但是,如果使用androidx,则import语句将更改为:

import androidx.databinding.library.baseAdapters.BR

不需要无效100%。我刚刚清理并重建以供参考,以便再次工作。

我确信这是@yigit所述的Studio错误,但是没有错误报告可以证实这一点。