有没有办法将其他parameter passing给我的自定义AndroidViewModel构造函数,除了Application上下文。 例:

public class MyViewModel extends AndroidViewModel { private final LiveData myObjectList; private AppDatabase appDatabase; public MyViewModel(Application application, String param) { super(application); appDatabase = AppDatabase.getDatabase(this.getApplication()); myObjectList = appDatabase.myOjectModel().getMyObjectByParam(param); } }

当我想要使用我的自定义ViewModel类时,我在我的片段中使用此代码:MyViewModel myViewModel = ViewModelProvider.of(this).get(MyViewModel.class)

所以我不知道如何将额外的参数String param传递给我的自定义ViewModel 。 我只能传递Application上下文,但不能传递其他参数。 我真的很感激任何帮助。 谢谢。

编辑:我添加了一些代码。 我希望现在好多了。

您需要为ViewModel创建工厂类。

public class MyViewModelFactory extends ViewModelProvider.NewInstanceFactory { private Application mApplication; private String mParam; public MyViewModelFactory(Application application, String param) { mApplication = application; mParam = param; } @Override public T create(ClassmodelClass) { return (T) new MyViewModel(mApplication, mParam); } }

在实例化视图模型时,您会这样做:

MyViewModel myViewModel = ViewModelProviders.of(this, new MyViewModelFactory(this.getApplication(), "my awesome param")).get(MyViewModel.class);

对于在多个不同视图模型之间共享的一个工厂,我会扩展mlyko的答案,如下所示:

public class MyViewModelFactory extends ViewModelProvider.NewInstanceFactory { private Application mApplication; private Object[] mParams; public MyViewModelFactory(Application application, Object... params) { mApplication = application; mParams = params; } @Override public T create(ClassmodelClass) { if (modelClass == ViewModel1.class) { return (T) new ViewModel1(mApplication, (String) mParams[0]); } else if (modelClass == ViewModel2.class) { return (T) new ViewModel2(mApplication, (Integer) mParams[0]); } else if (modelClass == ViewModel3.class) { return (T) new ViewModel3(mApplication, (Integer) mParams[0], (String) mParams[1]); } else { return super.create(modelClass); } } }

并实例化视图模型:

ViewModel1 vm1 = ViewModelProviders.of(this, new MyViewModelFactory(getApplication(), "something")).get(ViewModel1.class); ViewModel2 vm2 = ViewModelProviders.of(this, new MyViewModelFactory(getApplication(), 123)).get(ViewModel2.class); ViewModel3 vm3 = ViewModelProviders.of(this, new MyViewModelFactory(getApplication(), 123, "something")).get(ViewModel3.class);

具有不同构造函数的不同视图模型。

android new view参数,Android ViewModel附加参数相关推荐

  1. Android自定义view摇杆,Android 自定义摇杆控件(使用图片)

    效果图 1.找两张图片 1)Joystick背景图片circle_1.png 2)Joystick图片circle_2.png 2.在layout中创建布局文件 imagejoystick.xml 内 ...

  2. android自定义view圆环,Android自定义View实现圆环进度条

    本文实例为大家分享了android自定义view实现圆环进度条的具体代码,供大家参考,具体内容如下 效果展示 动画效果 view实现 1.底层圆环是灰色背景 2.上层圆环是红色背景 3.使用动画画一条 ...

  3. android自定义view onmeasure,Android 重写ViewGroup 分析onMeasure()和onLayout()方法

    Android 重写ViewGroup 分析onMeasure()和onLayout()方法 在继承ViewGroup类时,需要重写两个方法,分别是onMeasure和onLayout. 1,在方法o ...

  4. Android自定义view摇杆,Android自定义摇杆

    转载请说明出处! 作者:kqw攻城狮 出处:个人站 | CSDN 效果图 效果图 效果图 源码 喜欢就给个star,谢谢! 功能 支持自适应大小 支持2个方向.4个方向.8个方向的摇动监听 支持摇动角 ...

  5. android自定义view圆,Android自定义View圆形百分比控件(一)

    做一个自定义View的小练习,效果如下 只需要画一个圆.一个圆弧.一个百分比文本,添加一个点击事件,传入百分比重绘 1.在res/values文件夹下新建attrs.xml文件,编写自定义属性: 2. ...

  6. android 自定义view滚动条,Android自定义View实现等级滑动条的实例

    Android自定义View实现等级滑动条的实例 实现效果图: 思路: 首先绘制直线,然后等分直线绘制点: 绘制点的时候把X值存到集合中. 然后绘制背景图片,以及图片上的数字. 点击事件down的时候 ...

  7. android自定义view案例,Android自定义View的实现方法实例详解

    一.自绘控件 下面我们准备来自定义一个计数器View,这个View可以响应用户的点击事件,并自动记录一共点击了多少次.新建一个CounterView继承自View,代码如下所示: 可以看到,首先我们在 ...

  8. Android 自定义View大全,Android中自定义View的实现方式总结大全

    Android自定义view是什么 在我们的日常开发中,很多时候系统提供的view是无法满足我们的需求的,例如,我们想给一个edittext加上清除按钮,等等. 这时候我们就需要对系统的view进行扩 ...

  9. Android自定义view摇杆,Android自定义View实现游戏摇杆键盘的方法示例

    前言 本文主要给大家介绍的是关于Android自定义View实现游戏摇杆键盘的相关内容,为什么会有这篇文章呢?因为在之前的一个项目,操作方向的方式为上下左右,左上需要同时按住左键和右键的方式进行操作. ...

  10. android中view用法,Android中ImageView用法实例分析

    本文实例分析了Android中ImageView用法.分享给大家供大家参考,具体如下: 猜牌游戏大家可能以前都玩过,这里我们用这个小游戏来说明ImageView的用法. 首先,在res/drawabl ...

最新文章

  1. 2021年春季学期-信号与系统-第十一次作业参考答案-第三小题
  2. 几款表贴LED反向电流特性
  3. android 回收站设计,android-如何根据屏幕尺寸设置回收站视图项目的宽度尺寸?...
  4. 鸿蒙系统会支持youtube吗,华为鸿蒙系统,会受到人们的欢迎吗?
  5. linux 产生0~9内的随机数
  6. SQLServer数据库(二)
  7. beetl 页面标签_05.Beetl标签函数以及定界符、占位符介绍---《Beetl视频课程》
  8. 今天的但我发现了幸福的超级玛丽,白萝卜的种子
  9. django-如何debug
  10. 用vs2011 编译 orchard 源代码
  11. 搭建Hadoop2.5.2+Eclipse开发调试环境
  12. 关于不使用web服务实现文本框自动完成扩展
  13. 【go网络编程】-HTTP编程
  14. Ubuntu 印象笔记网页剪切插件无法登录问题的一种解决方案
  15. 六级阅读翻译——2017.11.13
  16. 网络协议 -- HTTPS(3)SSL/TSL协议
  17. redhat linux 禁用网卡,RedHat Linux下防火墙配置技巧
  18. CSS的背景——颜色,图片,背景图片位置,
  19. 交互式电子杂志_HUAWEI Magazine电子杂志阅读平台上线
  20. czl蒻蒟的OI之路10、11、12

热门文章

  1. linux samba
  2. 4.Jenkins 权威指南 --- 自动化测试
  3. 12.卷2(进程间通信)---共享内存区介绍
  4. 116. cURL 简介(2)
  5. 0. PSR-0 --- 自动加载
  6. 2. Magento2 --- (2) theme --- structure
  7. 带前后翻页的图片关东 js特效
  8. mac os 使用记录
  9. jquery事件绑定的几种用法
  10. bzoj1003[ZJOI2006]物流运输