我已经开始在安卓平台上使用LiveData学习MVVM。我认为显示和更新基本数据对我来说是很清楚的。我很难找到一个最佳实践的主题是控制UI。
假设我有一个基本的UI,例如一个表单。它有几个EditTextViews来输入数据。最后,它也有一个开关。如果是ON,则会显示出更多的EditTextViews来填充。当然,当离开时,它们就不见了。
我的问题是在哪里实施这个逻辑?
活动/片段代码中的
boolean中创建一组ViewModel getter,用于计算不同视图可见性的值。然后,在LiveData更改订阅块中的活动中,我需要读取所有这些值,并设置视图的可见性。。
提取的逻辑。
这里的最佳做法是什么?但是,用户输入验证这个主题也可以提出同样的问题(我想这些领域有很多)。
发布于 2020-08-06 09:33:33
我会采用第二种方法,但使用DataBinding的方式略有不同,灵感来自谷歌的向日葵示例应用程序:https://github.com/android/sunflower --它应该介绍Jetpack的最佳实践,包括MVVM。
然后,在
的活动中,在LiveData更改订阅块中,我需要逐个读取所有这些值,并为视图设置可见性。
不需要这样做,您可以订阅视图模型(使用DataBinding),类似于以下内容:
https://github.com/android/sunflower/blob/master/app/src/main/res/layout/fragment_plant_detail.xml
<data>
<import type="com.google.samples.apps.sunflower.data.Plant"/>
<variable
name="viewModel"
type="com.google.samples.apps.sunflower.viewmodels.PlantDetailViewModel" />
</data>然后,在布局本身中,根据对没有getter的viewmodel的引用,使用可见性设置。
app:isGone="@{!viewModel.isUnderAge}"或
android:visibility="@{viewModel.isUnderAge? View.VISIBLE : View.INVISIBLE}"https://stackoverflow.com/questions/63279628
复制相似问题