android - 来自 main.xml 的嵌套布局的数据绑定
问题描述
我可以成功地将 main.xml 的 UI 元素绑定到我的自定义模型类。但是,当我想使用嵌套工具栏.xml 布局的绑定时,它不起作用。
下面是我的代码片段。我在不同的试验中遇到不同的错误。
主视图.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>
导航绑定.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 文件中的变量以及如何使用它们吗?
解决方案
推荐阅读
- asp.net-mvc-5 - 使用 VisualStudio 在 localhost 中进行静态内容错误调试
- webpack - 从 Nuxt.js 与 PhpStorm 中的节点模块解析 SCSS 中的 @import .css
- javascript - 如果js回调window.print(),cefsharp winform静默打印到pdf
- java - 在 Java 中解码 C# 生成的 AES IV 和 KEY
- c# - BigBlueButton 集成 - “由于缺少凭据,身份验证失败。”
- swift - 根据用户在 Swift 中选择的日期更改显示的数据?
- css - CSS:媒体如何计算它的图像大小
- javascript - 递归 setTimeouts 对性能不利吗?
- drake - 限制浮动基础四元数位置和角速度的推荐方法是什么?
- macos - 在 macOS 上确定 PDF 文档中的渲染高度以绘制动态大小的页脚