遇到问题:
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中