要包含的布局如下, 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可以使其更容易。
答案 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。