首页 > 解决方案 > 不同视图模型的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>

这样的事情可能吗?

标签: androidandroid-databinding

解决方案


推荐阅读