簡體   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