我可以将ViewModel传递给RecyclerView适配器并观察LiveData吗?

And*_*orm 11 data-binding android mvvm recycler-adapter

我开始实施MVVM,我不知道是否使用ViewModel内部我Adapter是一个良好的实践或AntiPattern.

举个例子,考虑一下颜色列表和一个你将改变背景的图像.在这种情况下,我正在观察所选的颜色并绑定背景颜色以在UI中显示.

但是我在两个地方观察颜色选择:

  • Fragment为了改变背景颜色
  • Adapter显示中选择哪种颜色

所以,MVVM当我通过并观察ViewModel到时,我是否正确使用Adapter

Jan*_*ain 4

我现在不确定这是否是一个好的模式,但是这有一个问题:这样你的适配器与你的 ViewModel 绑定在一起,这意味着你不能在另一个屏幕上与其他 ViewModel 重用它。另一方面,如果没有来自 recyclerView 的额外回调,工作会更容易,这使得实现更容易。我想使用回调“更好”,但传递 ViewModel“更容易”(我认为 CG 应该毫无问题地处理它)

  • @AndroidStorm我使用了几种模式,我认为没有一个是错误的。选择的问题。现在我正在传递适配器回调接口,这样我就可以在几个屏幕上重用适配器。我可以在 Fragment 或 ViewModel 中扩展接口(因此我也可以在构造函数中传递 ViewModel)。我使用它加上数据绑定并且效果很好 - 例如我想“喜欢”帖子 - 界面使用回调来告诉 Fragment 它,Fragment 让 viewModel 处理调用,并且从调用中我正在更改帖子模型信息(喜欢的数量等)和它通过适配器中的数据绑定得到反映 (4认同)