MVVM中的布局复用:viewModel传递

时间:2021-7-9 作者:qvyue

遇到问题:

MVVM模式下需要用到ViewModel加载网络请求数据拿到数据,通过DataBinding绑定数据源到布局中,但当UI布局比较复杂时,需要抽出可复用的UI组件,使用标签进行布局引入,进行ui优化。
但当需要填充同一viewModel的数据源时,如果两个布局同时引入该viewModel,并不能进行数据同步,反而是用了两个互不影响的viewModel数据源,无法进行数据共享。

解决方法:

实现思路:将主布局的viewModel传递给子布局,共用一个ViewModel实例对象。

需要注意:

Activity对应的主layout文件中的viewModel对应需要被引入的文件的viewModel:activity_injuries_layout.xml

其中:app:viewModel对应布局injuries_drug_view引入的viewModel

app:viewModelChild = injuries_drug_view中引入的com.chiatai.iorder.module.breedmanagement.injuries.InjuriesViewModel的name

@{viewModel} 表明将Activity中的主layout的viewModel传递给子布局中的app:viewModel(name)。

实现目标

这样,在子布局中的ViewModel和主布局就能拿到同样的数据源,从而进行相关操作。例如:injuries_drug_view.xml中

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。