Я мог бы успешно связать элементы пользовательского интерфейса 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 и как их использовать?