我可以对一个片段使用两个viewmodel吗?

巴里斯·斯科特

我在Android项目中使用MVVM。我有创建和编辑片段。这两个片段具有大致相同的功能。如果编写在公共视图模型中具有相同功能的函数,是否可以将公共视图模型与自己的片段视图模型一起使用。例如我可以像下面这样使用吗?

 CommonViewModel(){

  void selectPriority()
      .
      .
      .
   otherthings...}

 CreateViewModel(){

  LiveData<CommonViewModel> cvm;
      .
      .
      .
   otherthings...}

  EditViewModel(){

    LiveData<CommonViewModel> cvm;
        .
       .
       .
     otherthings...}

代替这个

 CreateViewModel(){

  void selectPriority()
      .
      .
      .
   otherthings...}

  EditViewModel(){

    void selectPriority()
        .
       .
       .
     otherthings...}

还是您可以向我建议可以使用的其他方式?

阿什什

您可以通过继承来实现,创建一个通用的视图模型并在编辑和创建视图模型中对其进行扩展,例如

class CreatEditViewModel{

public void selectPriority(){
  //to something....
}
public void other(){
  //to something....
}

}

class CreateViewModel extends CreatEditViewModel{

}

class EditViewModel extends CreatEditViewModel{

}

您不能将这些逻辑放在BaseViewModel中,因为所有ViewModel都扩展了BaseViewModel。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我们可以在两个不同的活动类中使用一个片段吗

我们可以在视图分页器的一个父片段中嵌套两个子片段吗?

我可以在一个模型中使用两个警卫吗?

我可以安装和使用一个程序的两个版本吗?

我们可以在一个查询中使用两个枢轴吗?

我可以对两个不同的应用程序使用相同的Firebase吗?

我可以对两个应用程序使用相同的租户 ID 吗?

我可以对两个应用程序使用相同的AAD AppID吗?

我可以对一个命令“加入”吗?

我可以使用两个||吗?和一个&&在同一if语句中用PHP?

在 Kotlin 中使用 Flow 时,我可以使用一个 Job 而不是两个 Job 吗?

我可以有两个 recyclerView 一个 viewHolder 和两个适配器吗?

如果我有两个接口,那么一个类可以继承两个接口吗?

我可以在gulp中使用一个任务重命名或复制两个文件吗?

我可以使用一个控制器来更新AngularJS中的两个视图吗?

我可以在一个项目MVC中使用两个ASP.NET Core身份吗?

在Java中,我可以合并两个使用JspWriter和另一个PrintWriter的相似函数吗?

我可以在Rails中使用两个不同的名称创建一个属于another_model的模型吗?

我们可以在一个应用程序中使用两个MTProto连接吗?

我可以在一个网站上使用两个 Facebook 应用程序 ID 吗?

我可以使用一个 Selenium 驱动程序运行两个独立的 Google Chrome 窗口吗?

我们可以在同一个 SVG 中使用两个“use: href”属性吗?

我可以在KDE的两个虚拟桌面上扩展一个窗口吗?

我可以将这两个功能浓缩为一个吗?

我可以在Python中将两个装饰器组合为一个吗?

我可以从同一个jar文件执行两个不同的类吗?

我可以将一个文件中的更改分成两个提交吗?

我可以动态生成一个实现两个或更多接口的类吗?

我可以在一个终端上运行两个正在进行的程序吗?