如何将onClickListener传递给<include>标签?

时间:2018-10-09 08:52:24

标签: android android-databinding

要包含的布局如下, child.xml

 <layout>
       <data>
          <variable
              name="click"
              type="">   <!-- What type should be here? -->
       </data>    

       <LinearLayout>
           <View onClick="@{click}"/>
       </LinearLayout>
    </layout>

要添加此内容,请添加parent.xml:

<layout>
    <data>
       <variable
           name="viewModel"
           type="ViewModel"/>
    </data>
    <LinearLayout>
         <View onClick="()->viewModel.click1()"/>
         <include 
             bind:click="()->viewModel.click2()"/>
             layout="@layout/child"/>
    </LinearLayout>
</layout>

因此,如何将clickEvent仅传递给child.xml。由于不同的parent.xml具有不同的ViewModel,我认为我不应该将viewModel传递给child.xml。但是我不知道如何将方法传递给child.xml。

我现在正在执行的解决方案是Java File中的setOnClickListener。我怀疑是否 使用dataBinding可以使其更容易。

1 个答案:

答案 0 :(得分:2)

child.xml

<variable
    name="click"
    type="android.view.View.OnClickListener"/>


<View onClick="@{click}"/>

parent.xml

<include
    layout="@layout/row"
    app:click="@{()-> viewModel.click2()}"
    />

可以通过多种方式在include标记中传递变量,并读取@ my answer