我有一个包含3个RecyclerViews
的Activity
。我需要使用来自远程存储库的数据填充这些RecyclerViews
(3个不同的请求)。我可以在Activity
中使用多个ViewModels
,还是有更好的解决方案(最佳实践)。
我有一个包含3个RecyclerViews
的Activity
。我需要使用来自远程存储库的数据填充这些RecyclerViews
(3个不同的请求)。我可以在Activity
中使用多个ViewModels
,还是有更好的解决方案(最佳实践)。
ViewModel
。这样做并不会增加太多复杂度,并且您可以很容易地将一个ViewModel
(或者只是重新使用它)与相应的RecyclerView
移动到另一个Activity
中。RecyclerView
永远不会被重用或移动到另一个屏幕,那么您可以选择更简单的解决方案,只使用一个ViewModel
。ViewModel
(甚至带有3个列表)可能始终非常简单(只有三个LiveData
字段,只有几行代码来填充它们),则您可以打破这个规则。ViewModels
之间可以相互通信吗?比如说一个ViewModel
有一个LiveData
对象,可以触发另一个ViewModel
中的LiveData
。将它们绑定在Activity
中似乎不太合适,那么你会怎么做呢? - molViewModel
连接到另一个ViewModel
。我宁愿创建另一个对象,并将相同的实例注入到两个ViewModels
中。当然,这第三个共同的对象也可以有LiveData
作为成员,其中一个ViewModel
可以更新,而另一个则可以观察。如果您需要更详细的信息,请发布一个新问题,我很乐意回答。 - Piotr Aleksander Chmielowski在这种情况下,我建议使用一个视图模型来填充三个不同的LiveData对象。这样,当您的三个请求之一获得响应时,UI就可以得到更新。有关如何使用带LiveData的RecyclerView的详细信息,请参阅Google示例。
我认为在一个活动中有多个视图模型只会增加复杂性,并且我没有看到任何这样做的价值。
RecyclerViews
之间的耦合性,增加它们独立重用或在其他屏幕上移动的能力。 - Piotr Aleksander Chmielowski我在一个碎片中使用了两个RecyclerView。我认为使用两个ViewModel更好。因为不同的RecyclerView有自己的数据请求和状态处理,特别是连接错误。 在这种情况下,将它们分成不同的ViewModel不会增加复杂性,但我认为它很符合解耦的规则。
Activity
、ViewModel
和Service
之间的耦合非常高,因此将一个RecyclerView
从XActivity
移动到YActivity
会很困难。 - Piotr Aleksander Chmielowski