繁体   English   中英

在使用android体系结构组件指定的mvvm模式时,我的viewmodel是否有办法从视图中侦听事件?

[英]Is there a way for my viewmodel to listen to events from the view when using the mvvm pattern specified by the android architecture component?

我开始使用mvvm模式来构建我的android应用程序 ,并且我希望通过让视图观察来自viewmodel的数据来维护其模式,但是在需要时或仅需要观察数据的情况下(例如当导航到新布局时,我发现实现这种情况很困难。 请问有可能吗? 以及如何通过代码( kotlin )完成它?

我认为这是一个糟糕的决定,因为你的ViewModel不应该对View有任何了解,ViewModel应该使用DataBinding或Observer-Pattern “推送”到View。

ViewModel负责包装模型并准备视图所需的可观察数据。 它还为视图提供了将事件传递给模型的钩子。 但是,ViewModel与视图无关。

资源

即使您决定执行此类操作,您也必须了解在销毁视图时管理订阅可能很困难。

如果您只想观察一次,那么您必须为LiveData编写自己的扩展( 这里可以找到示例)。 你也可以阅读文章,以确保该如何处理单一事件。

如果您只是询问如何从ViewModel调用某些东西,当您的View中出现一些具体事件时,那么这里的最佳解决方案将是ViewModel中的简单调用方法,从您在窗口小部件的监听器(按钮等)中查看

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM