如何解决在 Android 中使用 MVVM 在运行时向活动添加视图
我的申请中有很多活动。每个 Activity 都有许多 UI 元素,例如 EditText
、TextView
、DatePicker
、DropDown
等。 Activity 既有静态组件(静态放置在 xml 布局中的视图)也有动态组件(视图根据业务逻辑和 API 响应在运行时添加)。要添加到活动中的 UI 元素是动态的。需要添加的所有 UI 元素取决于 API 响应。
我正在考虑编写一个方法,该方法接收有关要添加的所有视图作为参数的信息,然后构造视图并将其作为 LinearLayout
返回并添加所有子视图。
在下面的代码片段中,rowBuilder 是一个数据类,用于存储有关在运行时添加的视图的信息。该方法将构建一个包含所有需要的视图的垂直 linearLayout
并返回它。
fun getUIFields(context: Context,rowBuilderList: ArrayList<RowBuilder>): LinearLayout {
val rootVerticalLinearLayout: LinearLayout = getRootVerticalLinearLayout(context)
for(i in 0 until rowBuilderList.size) {
val horizontalLinearLayout = getHorizontalLinearLayout(context)
for (j in 0 until rowBuilderList[i].columnBuilderList.size) {
val formFieldInfo = rowBuilderList[i].columnBuilderList[j].formFieldInfo
if (formFieldInfo.formFieldType == FormFieldType.EDIT_TEXT) {
addEditText(formFieldInfo,horizontalLinearLayout,context,i.toString() + j.toString())
} else if (formFieldInfo.formFieldType == FormFieldType.DATE_PICKER) {
addEditTextForDatePicker(formFieldInfo,i.toString() + j.toString())
}
}
rootVerticalLinearLayout.addView(horizontalLinearLayout,i)
}
return rootVerticalLinearLayout
}
我把上面的逻辑放在哪里,这需要上下文?我知道我们有 AndroidViewModel
,我可以在其中使用上下文。此外,如果我在 ViewModel
中编写上述逻辑,则需要在每个 viewmodels
中复制相同的代码。我需要了解使用 MVVM 的更有效方法
请帮忙!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。