我有一个 Activity
包含 3 RecyclerViews
。我需要使用来自远程存储库的数据(3 个不同的请求)填充 RecyclerViews
。我可以在 --- 中使用多个 ViewModels
Activity
,或者是否有更好的解决方案(最佳实践)。
原文由 Martin 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个 Activity
包含 3 RecyclerViews
。我需要使用来自远程存储库的数据(3 个不同的请求)填充 RecyclerViews
。我可以在 --- 中使用多个 ViewModels
Activity
,或者是否有更好的解决方案(最佳实践)。
原文由 Martin 发布,翻译遵循 CC BY-SA 4.0 许可协议
根据 开闭原则,应该创建三个不同的 ViewModel
s。复杂性并没有增加那么多,并且您获得了将一个 ViewModel
与相应的 RecyclerView
移动到另一个的 Activity
很容易。
当然,有时打破规则是有道理的——例如,如果你知道,没有机会,那 RecyclerView
将被重复使用或移动到另一个屏幕,然后你可以用一个更简单的解决方案 ViewModel
。
同样的情况,如果 ViewModel
(即使有 3 个列表)可能总是非常简单(只有三个 LiveData
字段,只需几行代码来填充它们),你可以打破这个规则。
然而,违反 O/CP 并不是一个好的做法——它只是有意识地违反规则。
原文由 Piotr Aleksander Chmielowski 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答958 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
1 回答837 阅读✓ 已解决
2 回答946 阅读
2 回答886 阅读
1 回答820 阅读
2 回答689 阅读
在这种情况下,我建议使用一个视图模型来填充三个不同的 LiveData 对象。这样,只要您的三个请求之一得到响应,UI 就可以得到更新。有关如何将 RecyclerView 与 LiveData 一起使用的详细信息,请查看 Google 示例。
我认为每个活动有多个视图模型只会增加复杂性,我认为这样做没有任何价值。