我开始学习在Android上使用MVVM和LiveData。我认为显示和更新基本数据对我来说很清楚。但我在寻找最佳实践方面遇到了麻烦,即控制UI的问题。
假设我有一个基本的UI,例如一个表单。它有几个EditTextViews用于输入数据。最后还有一个开关。如果它是“ON”,则会显示更多的EditTextViews以供填写。当它处于“OFF”状态时,它们就消失了。
我的问题是在哪里实现这个逻辑?
1. 在Activity/Fragment代码中?这样业务逻辑将涉及到MVVM的VIEW部分(我觉得这不太好)。 2. 在ViewModel中?那么业务逻辑将存在于“数据缓存”中。这样,我需要在ViewModel中创建一堆布尔值获取器,以计算各个View可见性的值。然后在我的Activity中,在LiveData更改的订阅块中,我需要逐个读取所有这些值并设置视图的可见性。 3. 在一个单独的Service/Helper/Util类中?这将是与#2相同的解决方案,只是从ViewModel中提取了逻辑。
这里应该采用什么最佳实践?尽管如此,这个问题可能也会在用户输入验证方面出现(我想这些领域有很多这样的问题)。
假设我有一个基本的UI,例如一个表单。它有几个EditTextViews用于输入数据。最后还有一个开关。如果它是“ON”,则会显示更多的EditTextViews以供填写。当它处于“OFF”状态时,它们就消失了。
我的问题是在哪里实现这个逻辑?
1. 在Activity/Fragment代码中?这样业务逻辑将涉及到MVVM的VIEW部分(我觉得这不太好)。 2. 在ViewModel中?那么业务逻辑将存在于“数据缓存”中。这样,我需要在ViewModel中创建一堆布尔值获取器,以计算各个View可见性的值。然后在我的Activity中,在LiveData更改的订阅块中,我需要逐个读取所有这些值并设置视图的可见性。 3. 在一个单独的Service/Helper/Util类中?这将是与#2相同的解决方案,只是从ViewModel中提取了逻辑。
这里应该采用什么最佳实践?尽管如此,这个问题可能也会在用户输入验证方面出现(我想这些领域有很多这样的问题)。