android - 如何让xml中的`onClick()`调用两种方法?
问题描述
我想onClick()
在我的布局 xml 中触发来自两个视图模型的两种方法。
代码:
<Button
android:onClick="@{() -> model.onButtonClick()}"
... />
上面的代码调用了一种方法,我希望它从不同的视图模型中调用另一种方法。
我要添加的函数调用:model2.onButtonClick()
可能吗?如果是,请添加一个最小示例。(期待一个xml解决方案)
注意:视图模型在 xml 中作为参数传递。(数据绑定变量)
编辑 1:这两个功能都在两个不同的视图模型中。所以我(经过一些研究)知道在另一个视图模型中使用/声明/初始化一个视图模型不是一个好习惯。
我可以在我的片段中创建一个点击监听器并在那里调用这两个函数。但我想消除片段中的点击监听器(根据 MVVM 的视图)。
我不是在寻找一些可能的方法。我正在寻找一种最佳实践方法,我打算在其中实现 MVVM、关注点分离和数据绑定。
解决方案
我找到了解决方案。也许愚蠢但简单的天才:
app:onRefreshListener="@{() -> dashboardVM.onRefresh() != homeVM.onRefresh()}"
方法需要返回 true/false -> 无论如何。
对于任何其他数量的方法,使用OR
并始终返回 false。
正确的解决方案应通过转换器实现。但这需要很多代码。
推荐阅读
- python - Google 学者使用 Captcha 阻止 python scrapy
- c - 组件 IA32 中的符号扩展
- android - 大家好,你能帮我解决一个问题,当从 json 删除、添加或更新数据时,我的 recyclerview 应该自动更新
- javascript - ReactJs 中带有承诺和状态变量的无限循环
- python - Writing with Python Greek letters to (Oracle) SQL file doesn't work
- javascript - Showing the contents of a MYSQL database on a webpage using node.js and html
- visual-c++ - 使用 CMake 在 MSVC 中使用 Pytorch Cuda c++ 编译 C++/Cuda 扩展时出错
- ios - If AppleWebKit appears in the user agent does that mean it's definitely an apple device?
- html - Sticky-top not working with bootstrap navbar
- arduino - How to control the speed of a stepper motor using PID control and ultrasonic sensor?