Привязка данных с вложенным макетом из main.xml - PullRequest
0 голосов
/ 30 октября 2018

Я мог бы успешно связать элементы пользовательского интерфейса main.xml с моим классом модели. Однако, когда я хочу использовать привязку с вложенным макетом toolbar.xml, он не работает.

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

mainView.xml

<?xml version="1.0" encoding="utf-8"?>
<layout>

    <data>

        <variable
            name="binding"
            type="com.abc.xyz.android.model.NavigationBinding"/>
    </data>

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/parent_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <!-- tool bar to display back image and title -->
        <include
            android:id="@+id/tool_bar_view"
            layout="@layout/tool_bar"
            bind:binding="@{binding}"/> <!-- What to write here -->

        <LinearLayout
            android:id="@+id/ll_bottom_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:orientation="vertical">
          ......
        </LinerarLayout>
        </RelativeLayout>
        </layout>

too_bar.xml

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

    <data>
        <variable
            name="binding"
            type="com.abc.xyz.android.model.NavigationBinding"/>
    </data>

    <RelativeLayout
        android:id="@+id/root_toolbar_view"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize">

                <Button
                    android:id="@+id/btn_next1"
                    style="@style/Button.Borderless"
                    android:layout_width="80dp"
                    android:layout_height="match_parent"
                    android:layout_alignParentRight="true"
                    android:enabled="@{person.nextEnabled}"
                    android:text="@string/text_next"/>
....
</RelativeLayout>
</layout>

NavigationBinding.java

public class NavigationBinding extends BaseObservable {

    private boolean isPreviousEnabled = false;
    private boolean isNextEnabled = false;

    @Bindable
    public boolean isPreviousEnabled() {
        return isPreviousEnabled;
    }

    public void setPreviousEnabled(boolean enabled) {
        isPreviousEnabled = enabled;
        notifyPropertyChanged(BR.previousEnabled);
    }

    @Bindable
    public boolean isNextEnabled() {
        return isNextEnabled;
    }

    public void setNextEnabled(boolean enabled) {
        isNextEnabled = enabled;
        notifyPropertyChanged(BR.nextEnabled);
    }
    }

MainActivity.java

 public class MainActivity extends AppCompatActivity{

    private NavigationBinding navigationBinding = null;
    private MainViewBinding uiElementBinding = null;

    @Override
        public void onCreate() {
    navigationBinding = new NavigationBinding();
            uiElementBinding = DataBindingUtil.bind(parentView); // parentView = RecyclerView with parent_view id.
            uiElementBinding.setBinding(navigationBinding);
    }
    }

Не могли бы вы помочь мне инициализировать переменные в файле .java и как их использовать?

...