Android - <Include/> 数据绑定
Android - <Include/> Data Binding
我已经阅读了一些示例和 Android 文档,但我的实现不起作用
我有我的 activity 和我的视图模型。
Activity布局
<?xml version="1.0" encoding="utf-8"?>
<layout>
<data>
<variable
name="viewmodel"
type="package.to.viewmodel"/>
</data>
<android.support.v4.widget.DrawerLayout>
<include
app:viewmodel="@{viewmodel}"/>
<!-- More Code -->
</android.support.v4.widget.DrawerLayout>
</layout>
包括布局
<?xml version="1.0" encoding="utf-8"?>
<layout>
<data>
<variable
name="viewmodel"
type="package.to.viewmodel"/>
</data>
<android.support.design.widget.CoordinatorLayout>
<!-- More Code -->
<android.support.design.widget.FloatingActionButton
android:onClick="@{viewmodel.newButtonClickListener}"/>
</android.support.design.widget.CoordinatorLayout>
</layout>
ViewModel代码
public class MainViewModelImpl implements MainViewModel {
private View.OnClickListener newButtonClickListener;
private View.OnClickListener newEventButtonClickListener;
private View.OnClickListener newAssignmentButtonClickListener;
private View.OnClickListener newContactButtonClickListener;
private View.OnClickListener newChatButtonClickListener;
//All the getters for the Listeners
}
所以代码构建和运行没有错误,但是当我点击按钮时没有任何反应,即使我的监听器已正确实现。
有没有人知道为什么没有触发侦听器?
更新
当我调试应用程序时,我发现 include 布局中的视图模型为空,即使在绑定之后也是如此。
当您在 include 中设置 viewModel 变量时,您应该使用 bind:viewmodel
而不是 app:viewmodel
。
我的数据绑定演讲中有一个示例 in the official documentation or in the demo project。
我明白了,我在膨胀视图之前进行了绑定。所以现在可以了。
谢谢
我已经阅读了一些示例和 Android 文档,但我的实现不起作用
我有我的 activity 和我的视图模型。
Activity布局
<?xml version="1.0" encoding="utf-8"?>
<layout>
<data>
<variable
name="viewmodel"
type="package.to.viewmodel"/>
</data>
<android.support.v4.widget.DrawerLayout>
<include
app:viewmodel="@{viewmodel}"/>
<!-- More Code -->
</android.support.v4.widget.DrawerLayout>
</layout>
包括布局
<?xml version="1.0" encoding="utf-8"?>
<layout>
<data>
<variable
name="viewmodel"
type="package.to.viewmodel"/>
</data>
<android.support.design.widget.CoordinatorLayout>
<!-- More Code -->
<android.support.design.widget.FloatingActionButton
android:onClick="@{viewmodel.newButtonClickListener}"/>
</android.support.design.widget.CoordinatorLayout>
</layout>
ViewModel代码
public class MainViewModelImpl implements MainViewModel {
private View.OnClickListener newButtonClickListener;
private View.OnClickListener newEventButtonClickListener;
private View.OnClickListener newAssignmentButtonClickListener;
private View.OnClickListener newContactButtonClickListener;
private View.OnClickListener newChatButtonClickListener;
//All the getters for the Listeners
}
所以代码构建和运行没有错误,但是当我点击按钮时没有任何反应,即使我的监听器已正确实现。
有没有人知道为什么没有触发侦听器?
更新 当我调试应用程序时,我发现 include 布局中的视图模型为空,即使在绑定之后也是如此。
当您在 include 中设置 viewModel 变量时,您应该使用 bind:viewmodel
而不是 app:viewmodel
。
我的数据绑定演讲中有一个示例 in the official documentation or in the demo project。
我明白了,我在膨胀视图之前进行了绑定。所以现在可以了。
谢谢