繁体   English   中英

Android - <Include/> 数据绑定

[英]Android - <Include/> Data Binding

我正在阅读一些示例和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
}

所以代码构建和运行没有错误,但是当我点击按钮没有任何反应,即使我的听众正确实现。

有没有人知道为什么听众没有被触发?

更新当我调试应用程序时,我意识到包含布局中的视图模型即使在绑定之后也是null。

我想通了,我在给视图充气之前正在进行绑定。 所以现在它有效。

谢谢

在include中设置viewModel变量时,应使用bind:viewmodel而不是app:viewmodel

官方文档或我的数据绑定谈话的演示项目中提供一个示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM