1

我已经用 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

4 回答 4

7

既然 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"
于 2019-09-21T19:56:07.197 回答
4

我可以确认@jee状态的工作原理。但是,如果使用 androidx,import 语句将变为:

import androidx.databinding.library.baseAdapters.BR

无效不是 100% 需要的。我刚刚清理并重建了我的引用再次工作。

我确信这是@yigit提到的 Studio 错误,但没有任何错误报告证实这一点。

于 2019-09-20T12:39:43.977 回答
4

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

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

于 2016-12-06T04:45:22.557 回答
2

我尝试过以下操作,现在可以使用:

1.将BR的import改为 import com.android.databinding.library.baseAdapters.BR;

2.file->使cahces/restart无效

于 2019-09-11T07:05:04.800 回答