问题标签 [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.

0 投票
1 回答
283 浏览

android - 如何将 LiveData 转换为 2 个 liveData?

我有configLiveData:LiveData<Response<ConfigFile>>响应在哪里

现在ViewModel我想转换configLiveData为两个不同的 LiveDatas1.LiveData<ConfigFile>和 2.LiveData<String>并且由于转换,其中一个将为空。但我想搭便车,LiveData<Response<ConfigFile>>而不是它LiveData<ConfigFile>

0 投票
3 回答
3653 浏览

android - 是否可以在没有额外变量的情况下增加 mutablelivedata?

我有带有编辑文本和 2 个按钮的简单视图,我希望用户能够使用按钮将数量增加/减少 1,或者他可以在编辑文本小部件中手动写入数量,但这个值不能小于 0 并且大于10. 我正在使用带有 LiveData 和数据绑定的 MVVM 架构。目前在 ViewModel 我有两个变量_amount: Intamount:MutableLiveData. 我正在递增/递减_amount,然后为 MutableLiveData 分配新值。它正在工作,但我想知道是否有可能只使用一个变量来存储金额即获得相同的结果amount:MutableLiveData

视图模型 活动 布局
0 投票
1 回答
269 浏览

android - 带有自定义模型的 Android ViewModel

我打算有一个模型类并通过 Android ViewModel 提供这个模型的一个实例。ViewModel 中的实例可以在应用程序生命周期中发生变化。

我现在的想法是这样的:

这是一个好方法吗?我不确定将 LiveData 嵌套在另一个类中是否是个好主意。

每次书籍更改时,我为书名创建一个新的观察者也可能是一个问题吗?

0 投票
0 回答
363 浏览

android - 如何使我的编辑文本在配置更改中保留,使用视图模型而不使用数据绑定

我创建了一个登录屏幕。如果我在编辑文本上键入内容并旋转我的设备,数据就会丢失。我怎样才能让我的编辑文本,在这些变化中幸存下来?

我创建了一个 loginViewModel,我只是在其中从 api 获取数据。

这是我的登录活动

这是我的登录视图模型。现在它不能作为视图模型工作。我刚刚命名了它,但我想让它作为一个视图模型类工作

0 投票
0 回答
44 浏览

sqlite - 当 String [] 是一个字段时,SQLite 按 String [] 中的位置排序

我在 Room 中有一个如下表,在 Android 应用程序中,我使用 Raw Query 来获取数据。它可以按数组排序字段中的第二个值排序吗?

最初,我在 Repository 中使用 Transformations.switchMap 进行了排序部分,在函数内是 MutableLiveData> 并应用了 Collections.sort。

它就像一个魅力:

在分页实现之后,我取出了排序逻辑,移至查询构建器,我就在这里。

0 投票
2 回答
4693 浏览

android - 如何将两个 mutablelivedata 的结果合二为一

我的 ViewModel 中有两个变量,由用户使用按钮控制。他可以通过单击适当的按钮来减少或增加值。

val age = MutableLiveData<Int>().apply { value = 0 }

val weight = MutableLiveData<Double>().apply { value = 0.0 }

现在我只想在两个变量的值都大于 0 时启用保存按钮。怎么做?我想过在 ViewModel 中创建另一个 LiveData 变量,correctData或者以某种方式在 Activity 中观察年龄和体重变量,但我需要帮助,因为我不知道该怎么做。

谢谢你的帮助。

更新

我创建了 MediatorLiveData 并且它几乎可以工作,几乎是因为它没有检测两个来源是否都提供了真正的价值,但是否有任何真正的价值。

有任何想法吗?

0 投票
1 回答
107 浏览

android - 了解 LiveData 和 DataBinding

我是 android 开发和 MVVM 的新手,并尝试了解 Databinding 和 LiveData。

  • 使用单向数据绑定,您可以将数据从视图模型获取到视图。
  • 使用双向数据绑定,您可以从视图模型到视图以及从视图到视图模型获取数据。

当视图模型中的数据发生变化时,LiveData 也会更新视图。

当 DataBinding 已经在单向和双向数据绑定中做到这一点时,我为什么要使用 LiveData?

将数据绑定与 LiveData 一起使用有什么好处?

0 投票
1 回答
44 浏览

java - 如何修复此 DataBinding 和 LiveData 代码?

我正在尝试将 DataBinding 与 LiveData 连接,但遇到了一些我不知道如何解决的问题。我不确定我是否对 LifecycleOwner 做错了,但它不起作用。还有一些解释为什么正确的方法是正确的。该应用程序甚至没有启动,我不知道我的错误是什么。谢谢您的帮助

0 投票
1 回答
1323 浏览

java - 如果 MutableLiveData 正在更改,为什么我的 ViewModel 没有调用 .observe() 并通知适配器?

编辑:真正的问题是 submitList() 没有触发 recyclerView 中的 onCreateViewHolder()。

解决方案:

我看到人们一直有这个问题。android DiffUtils 不适用于 List 的相同实例,如果传递了 List 的相同实例,Adapter 将忽略它,即使它的内容不同,这意味着每次提交都需要一个新的 List。

因此,如果您的组件正在更改列表的内部状态,最好new ArrayList(toSubmit);在提交之前创建它的副本。

问题

内部MutableLiveData正在ViewModel更新,但未.observe()触发通知适配器的 。

我正在尝试显示来自Firebase数据库的数据,并且我想使用一个HandlerThread引用一个孩子并添加一个childEventListener以使片段之间的事情变得更容易。

但是即使没有 HandlerThread,这个问题仍然存在,即使我将整个 firebase 引用放在 Fragment 中,ViewModel 仍然不会触发.observe()

checksize()方法告诉我MutableLiveData,尺寸确实在增加。

ValueSetter是一个类,它获取snapShot它在 List 中的位置,然后设置MutableLiveDataValueStter 的代码的新值是:

我的 FragmentHandlerThread从 Main Activity 检索初始化,然后继续执行通常的操作:Databindings,设置RecyclerView,创建 de Adapter 并设置它,然后ViewModel通过工厂调用其构造函数,然后ViewModel提交列表,以防万一通知适配器,但即使这样也不起作用......

SmoothScrollToPosition() 是唯一的代码片段,它在一定程度上解决了我的 recyclerView 及其适配器未得到通知的问题,问题是这个片段只解决了应用程序第一次启动时的问题,但是如果添加了一个孩子recyclerView 拒绝更新。

如果我删除了 smoothScrollToPosition() 代码行,recyclerView 什么也不会显示,它只会在我用手指按字面触摸它后填充列表。

在 onStart 上,您可以看到我发送的消息,其中包含子“C”的引用,以及负责数据快照的 ViewModel。

因为我以前做过,所以我知道为了让 viewmodel 能够更改视图,它必须在创建视图的同一线程中完成,这意味着 onChildEventListener 在 Ui 线程上运行我的自定义侦听器运行OnUiThread()。

这是 My 中的处理程序HandlerThread,该removeEventListener代码段已被注释,以便在添加子项时仍会监听事件。

如果将侦听器的整个数据库引用放置在片段内,则 ViewModel 拒绝触发 .observe()。当我使用相同的:mViewModel2.getCategories(dataSnapshot)从内部ChildEventListener()

SingetS()是快照中在该位置检索到的唯一字段。

0 投票
2 回答
51 浏览

java - How to properly call network fetching function from view model

How should I call the function QueryUtils.fetchData(REQUEST_URL) inside of ViewModel, it returns List<Earthquakes>. This code fetches data the way it should, but it doesn't display it probably because it already sets data before it is fetched.