android new view参数,Android ViewModel附加参数
有没有办法将其他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附加参数相关推荐
- Android自定义view摇杆,Android 自定义摇杆控件(使用图片)
效果图 1.找两张图片 1)Joystick背景图片circle_1.png 2)Joystick图片circle_2.png 2.在layout中创建布局文件 imagejoystick.xml 内 ...
- android自定义view圆环,Android自定义View实现圆环进度条
本文实例为大家分享了android自定义view实现圆环进度条的具体代码,供大家参考,具体内容如下 效果展示 动画效果 view实现 1.底层圆环是灰色背景 2.上层圆环是红色背景 3.使用动画画一条 ...
- android自定义view onmeasure,Android 重写ViewGroup 分析onMeasure()和onLayout()方法
Android 重写ViewGroup 分析onMeasure()和onLayout()方法 在继承ViewGroup类时,需要重写两个方法,分别是onMeasure和onLayout. 1,在方法o ...
- Android自定义view摇杆,Android自定义摇杆
转载请说明出处! 作者:kqw攻城狮 出处:个人站 | CSDN 效果图 效果图 效果图 源码 喜欢就给个star,谢谢! 功能 支持自适应大小 支持2个方向.4个方向.8个方向的摇动监听 支持摇动角 ...
- android自定义view圆,Android自定义View圆形百分比控件(一)
做一个自定义View的小练习,效果如下 只需要画一个圆.一个圆弧.一个百分比文本,添加一个点击事件,传入百分比重绘 1.在res/values文件夹下新建attrs.xml文件,编写自定义属性: 2. ...
- android 自定义view滚动条,Android自定义View实现等级滑动条的实例
Android自定义View实现等级滑动条的实例 实现效果图: 思路: 首先绘制直线,然后等分直线绘制点: 绘制点的时候把X值存到集合中. 然后绘制背景图片,以及图片上的数字. 点击事件down的时候 ...
- android自定义view案例,Android自定义View的实现方法实例详解
一.自绘控件 下面我们准备来自定义一个计数器View,这个View可以响应用户的点击事件,并自动记录一共点击了多少次.新建一个CounterView继承自View,代码如下所示: 可以看到,首先我们在 ...
- Android 自定义View大全,Android中自定义View的实现方式总结大全
Android自定义view是什么 在我们的日常开发中,很多时候系统提供的view是无法满足我们的需求的,例如,我们想给一个edittext加上清除按钮,等等. 这时候我们就需要对系统的view进行扩 ...
- Android自定义view摇杆,Android自定义View实现游戏摇杆键盘的方法示例
前言 本文主要给大家介绍的是关于Android自定义View实现游戏摇杆键盘的相关内容,为什么会有这篇文章呢?因为在之前的一个项目,操作方向的方式为上下左右,左上需要同时按住左键和右键的方式进行操作. ...
- android中view用法,Android中ImageView用法实例分析
本文实例分析了Android中ImageView用法.分享给大家供大家参考,具体如下: 猜牌游戏大家可能以前都玩过,这里我们用这个小游戏来说明ImageView的用法. 首先,在res/drawabl ...
最新文章
- 2021年春季学期-信号与系统-第十一次作业参考答案-第三小题
- 几款表贴LED反向电流特性
- android 回收站设计,android-如何根据屏幕尺寸设置回收站视图项目的宽度尺寸?...
- 鸿蒙系统会支持youtube吗,华为鸿蒙系统,会受到人们的欢迎吗?
- linux 产生0~9内的随机数
- SQLServer数据库(二)
- beetl 页面标签_05.Beetl标签函数以及定界符、占位符介绍---《Beetl视频课程》
- 今天的但我发现了幸福的超级玛丽,白萝卜的种子
- django-如何debug
- 用vs2011 编译 orchard 源代码
- 搭建Hadoop2.5.2+Eclipse开发调试环境
- 关于不使用web服务实现文本框自动完成扩展
- 【go网络编程】-HTTP编程
- Ubuntu 印象笔记网页剪切插件无法登录问题的一种解决方案
- 六级阅读翻译——2017.11.13
- 网络协议 -- HTTPS(3)SSL/TSL协议
- redhat linux 禁用网卡,RedHat Linux下防火墙配置技巧
- CSS的背景——颜色,图片,背景图片位置,
- 交互式电子杂志_HUAWEI Magazine电子杂志阅读平台上线
- czl蒻蒟的OI之路10、11、12