use*_*386 2 android android-databinding
要包含的布局是这样的,child.xml:
<layout>
<data>
<variable
name="click"
type=""> <!-- What type should be here? -->
</data>
<LinearLayout>
<View onClick="@{click}"/>
</LinearLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
要包含此内容,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>
Run Code Online (Sandbox Code Playgroud)
那么如何将 clickEvent 仅传递给 child.xml。由于不同的 parent.xml 具有不同的 ViewModel,我认为我不应该将 viewModel 传递给 child.xml。但我不知道如何将方法传递给 child.xml。
我现在正在做的解决方案是 Java 文件中的 setOnClickListener。我怀疑 dataBinding 是否可以使它更容易。
在 child.xml
<variable
name="click"
type="android.view.View.OnClickListener"/>
<View onClick="@{click}"/>
Run Code Online (Sandbox Code Playgroud)
在 parent.xml
<include
layout="@layout/row"
app:click="@{()-> viewModel.click2()}"
/>
Run Code Online (Sandbox Code Playgroud)
有很多方法可以在include标签中传递变量,请阅读@我的回答。
| 归档时间: |
|
| 查看次数: |
374 次 |
| 最近记录: |