android - 如何将 onClickListener 传递给标签?
问题描述
要包含的布局是这样的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 是否可以使它更容易。
解决方案
在child.xml
<variable
name="click"
type="android.view.View.OnClickListener"/>
<View onClick="@{click}"/>
在parent.xml
<include
layout="@layout/row"
app:click="@{()-> viewModel.click2()}"
/>
有很多方法可以在include
标签中传递变量,请阅读@我的答案。
推荐阅读
- python - 当某些目标是 TensorFlow 模型中的 NaN 时,如何测量每个目标的准确度
- wordpress - Wordpress Smush Lazy Loading 添加填充,如何排除特定图像
- scala - 全局禁用 sbt supershell
- angular - ionic 5 原生条码扫描器 - 无法导入
- node.js - 用 Jest 测试 NextJS API 中间件
- sql - SQL获取总数并同时使用pivot
- javascript - Typescript 中用于存储任何组件的数据类型
- vue.js - vue-chartJs,无法更新图表
- flutter - 从其他页面返回后关闭模态底页
- html - 使用 Bootstrap Grid 时文本溢出