问题标签 [mutablelivedata]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mvvm - MVVM - 自定义模型的 MutableLiveData 没有通过数据绑定更新到 ViewModel 并且始终为空
概括:
当我尝试向存储库发送自定义模型时,MutableLiveData 为空。我认为这是因为 MutableLiveData 的观察者。
请读到最后。
视图模型
正如你在这里看到的,我有一个 MutableLiveData
我的LoginModel是这样的
使用数据绑定和与上面的 ViewModel 绑定来定义片段。
login_fragment.xml
使用数据绑定,我已经实现了etEmail和模型 UserModel的属性用户之间的关系,并且我已经实现了etPassword 和属性密码之间的关系
当用户点击btnServerLogin时,LoginFragment将执行以下代码
这就是问题所在。
kotlin.KotlinNullPointerException
有原因是因为loginModel.value!!一片空白
MutableLiveData 的值始终为空。我虽然它会在您输入电子邮件或密码的 EditText 的同时发生变化。
这是我在其中初始化 ViewModel 的 LoginFragment OnActivityCreated 的代码
我究竟做错了什么?我需要添加特定的观察者吗?
谢谢
android - MutableLivedata 观察者触发
我有一个关于MutableLiveData
in的问题Viewmodel
。只是触发观察setValue
的功能吗?MutableLiveData
如果我们改变MutableLiveData
witout的内容setValue
,它会被触发吗?
android - MutableLiveData 不起作用,ObservableField 起作用 - 为什么?
我在 XML 中有一个非常简单的代码:
现在什么时候viewModel.inputEnabled
是MutableLiveData<Boolean>
下面的,它根本不起作用,编辑总是启用的,不管inputEnabled
. 但是,只需更改inputEnabled
为ObservableField<Boolean>
(并切换setValue
到set
),即可立即开始工作。
为什么呢?我怎样才能MutableLiveData
正常工作?
请注意,该字段在三个地方使用(在处理期间启用/禁用表单)。
android - 为什么 onChange 结果在测试 LiveData 中为“假”
这是我在 stackoverflow 上的第一篇文章,我是 kotlin 的初学者,生命周期,需要帮助。我失去了 2 天,需要帮助。
我有 SplashViewModel 类
SplashViewModelTest 类
当运行这个测试结果是错误的
论据不同!通缉:observer.onChanged(true); -> 在 com.example.kotlinmvvm.feature.splash.viewModel.SplashViewModelTest。调用 getIsLoggedLiveData 时应检查配置用户登录状态(SplashViewModelTest.kt:85)
实际调用有不同的参数:observer.onChanged(false); -> 在 androidx.lifecycle.LiveData.considerNotify(LiveData.java:113)
比较失败:
预期:observer.onChanged(true);
实际:observer.onChanged(false);
谁知道发生了什么事?
android-fragments - 删除 + 添加后片段未收到 LiveData 更新
我目前正在玩弄与和fragment
相关的生命周期。ViewModel
LiveData
我有2fragments
和. 我在 each 的方法中添加了。 fragmentA
fragmentB
Observer
onCreate
fragment
每个fragment
都有一个按钮,可以LiveData
在共享中更改ViewModel
SharedViewModel
:
当我单击一个按钮时,我会替换另一个按钮fragment
。
Replace
导致它被完全销毁并在下次添加时再次fragment
运行它的方法。onCreate
我可以确认onCreate
每个fragment
放置在屏幕上的都调用它并Observer
添加。但是,一旦我替换了 afragment
并重新添加了它,它就完全停止在onChanged
. 甚至是它自己发送的那些。onChanged
只是不再触发。我不明白为什么。
编辑:
我实际上发现类中的后续if
检查LiveData
返回我第二次尝试添加Observer
(在替换fragment
第一个之后):
因此,Observer
不再添加。为什么我尝试重新添加时getCurrentState()
返回?DESTROYED
fragment
简而言之:Observer
删除时删除了,但下次添加片段时fragment
不会添加另一个。Observer
android - 将 ArrayAdapter 与 LiveData 一起使用。
我熟悉 WPF 中的 MVVM,但我正在移植现有的 Android 应用程序以首次使用 ViewModel 类和 LiveData。
应用程序“as/was”有一个自定义 ArrayAdapter,用于正确显示网格视图中列表中包含的项目。执行此操作的代码基本上看起来像这样(“基本上”,因为活动中实际上有 4 个这样的网格都这样做):
当 playerList 内容改变时,有一个明确的调用
由于我的目标是让网格在 playerList 更改时自动响应,并且永远不必通知任何内容,现在看来“playerList”需要成为MutableLiveData<List<String>>
.
我怀疑我会遇到问题——
MyAdapter 类扩展ArrayAdapter<T>
所以在实践中它会变成一个
但是 MutableLiveData 不会在那里工作,对吧?
我可以打开它并调用创建它,如下所示:
这个对吗?这似乎是疯狂的方式。
最终我的目标是在 xml 中将 gridView 的android:adapter
属性分配给这个东西,并且永远不必再考虑它(除了当我修改底层列表时对 setvalue() 和 postValue() 的必需调用......我不是甚至确定如何在这里工作。
我希望已经有一个 MutableLiveData Collection 准备好去某个地方,我会使用它。
这样做的标准方法是什么?
kotlin - 在 LiveData 或 MutableLiveData 中包装 MutableList
将 a 包装MutableList
在其中一个LiveData
或MutableLiveData
这样的推荐方法是什么,以便可以修改列表并观察它所经历的变化?
我在 Room 中有一些相当短的表(<20 个项目)(它缓存从服务器检索到的值)。我想保留这些项目的可变子集;用作其他更大表的查询中的过滤器。我的想法是将 a 分配给MutableList
我的应用程序中的模型类,并通过将此类包装在MutableLiveData
或中使其可观察LiveData
。然后通过更新这些选择中的项目,我可以在大表上触发必要的查询。
目前我的代码具有以下结构,我在我的问题中将其剥离为我认为相关的内容。最终我想keyset
在更复杂的查询中使用多个。我的简化模型文件如下,
它依赖于存储库,
依赖于查询集
Key
和Value
类只是简单的 POJO和KeyEntity
简单ValueEntity
地指定相同的字段。
我应该使用MutableLiveData
还是LiveData
为此目的?如果是这样应该如何实施keyset
?也许这样做有更规范的方式?
kotlin - 对同一 ViewModel 中的 LiveData 更改做出反应
我有一个由其他sViewModel
扩展的基础:ViewModel
我希望能够在state
更改(_state.setValue(newvalue)
或被_state.postValue(newvalue)
调用)时做出反应(例如,添加日志语句),并且我想在BaseViewModel
.
我怎么做?
android - MutableliveData 从存储库返回 null 到 singleLiveEvent
我正在尝试单击按钮调用网络。我正在使用 singleLiveEvent 包装器,因为需要将数据发送到服务器并仅在单击按钮时才检索响应。我正在使用 Volley 进行 GET 和 POST 调用。我在存储库上得到响应,但在 onChanged 方法上没有。它从存储库中获取空值。
视图模型类
存储库类
我希望仅在单击按钮时发送数据,而不是在活动开始时发送。
android - 如何使用android中的可变实时数据将数据存储库的改造响应中继到视图模型?
我能够发出网络请求并在我的数据存储库中取回响应,但无法在我的视图模型中获取该响应。
资料库:
查看型号:
活动:
显示来自数据存储库的日志,但没有显示来自活动的日志。我究竟做错了什么?