android - 不同视图模型的Android数据绑定相同的布局
问题描述
我有 2 个应用程序,它们做的事情基本相同,但它们的数据模式略有不同,有很多共享变量,比如:
data class modelOne (
val uniqueModelOne: String,
val dateCreated: Date,
val dateLastModified: Date
)
data class modelTwo (
val uniqueModelTwo: String,
val dateCreated: Date,
val dateLastModified: Date
)
我已经制作了一个基本视图模型,它位于一个库模块中,两个应用程序都可以从中继承处理共享参数,并且我在每个应用程序项目中都有一个子视图模型,它扩展了该基础并添加了每个应用程序的唯一参数。
class BaseViewModel (): ViewModel() {
val dateCreated: ObservableField<Optional<Date>> = ObservableField()
val dateLastModified: ObservableField<Optional<Date>> = ObservableField()
init {
...
dateCreated.set (...)
dateLastModified.set (...)
}
}
class ChildViewModelOne: BaseViewModel() {
val uniqueModelOne: ObservableString = ObservableString()
init {
...
uniqueModelOne.set (...)
}
}
class ChildViewModelTwo: BaseViewModel() {
val uniqueModelTwo: ObservableString = ObservableString()
init {
...
uniqueModelTwo.set (...)
}
}
我真的只想拥有一个实现数据绑定的视图,并且能够根据我所在的应用程序换出该视图中的视图模型变量,以便我可以将该视图文件保留在库模块中,而不是复制视图。
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="viewModel"
type="ChildViewModelOne" /> <!-- I want to be able to change that type dynamically depending on what app I am in -->
</data>
这样的事情可能吗?
解决方案
推荐阅读
- python - CheckboxSelectMultiple 不会预先选中初始值设置为查询集的复选框
- xml - 注册电子表格到 xml 的转换
- c# - 如何检查列表中的值?我将在 if 语句中使用它
- http - 无法从 ESP8266 发布数据
- javascript - 如何在js中插入换行符?
- python-3.x - 如何在 python 的朴素贝叶斯分类器中对用户输入测试集进行分类?
- android - 点击登录后没有任何反应
- r - 从 xls 读取重复的列名时重命名列名
- java - Spring-Hibernate with Cassanra DB:找不到 CassandraCQL2Dialect 的类
- android - Android对讲在nexus中逐个字符地宣布一些单词