我正在阅读一些示例和Android文档,但我的实现无法正常工作
我的活动和视图模型。
活动布局
<?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布局中的视图模型即使在绑定之后也是null。
答案 0 :(得分:1)
我想通了,我在给视图充气之前正在进行绑定。所以现在它有效。
由于
答案 1 :(得分:-1)
在include中设置viewModel变量时,应使用bind:viewmodel
而不是app:viewmodel
。
我的数据绑定谈话中有一个示例in the official documentation或in the demo project。