BR не может быть разрешен в Android Databinding - PullRequest
0 голосов
/ 10 июля 2019

Я использую привязку данных Android, но BR не может быть решена вот мой манекен, вид модели

Я включил привязку данных в моем приложении

dataBinding {
        enabled = true
    }

Свойства gradle-wrapper.properties, имеющие:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip

Вот моя модель просмотра

public class DummyViewModel extends BaseObservable {

    private int mSomeValue = 0;
    public void setValue(int value) {
        mSomeValue = value;
        //Here BR can not be resolved
        notifyPropertyChanged(com.something.myapplication.BR.positive);
    }

    @Bindable
    public boolean isPositive() {

        return mSomeValue > 0;
    }
}

Здесь classPath Project gradle

dependencies {

    classpath 'com.android.tools.build:gradle:3.4.2'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

Android Studio version: 3.4

1 Ответ

1 голос
/ 10 июля 2019

Если ваш XML верен, попробуйте очистить и восстановить.Иногда AS может согласовывать привязки данных.Если он все еще не работает, скорее всего, у вас есть ошибка в вашем коде в другом месте.

XML должен выглядеть примерно так:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>
        <variable
            name="viewModel"
            type="com.something.myapplication.DummyViewModel"/>
    </data>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="@{viewModel.positive ? View.VISIBLE : View.GONE}"
            android:src="@drawable/something"/>
   </RelativeLayout>
</layout>

...