问题标签 [android-viewmodel]

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 投票
0 回答
1082 浏览

android - 具有自定义类型转换器实时数据的 Android 房间连续触发

连续添加类型转换器实时数据触发器后

这是我的 JobImages 实体

这是我的 DAO

AddOnService 类

转换器类

这个数据库类

我没有收到任何编译时错误,但是在添加类型转换器后进入屏幕时 Livedata 连续触发有什么问题吗?

0 投票
1 回答
3396 浏览

android - Android 架构组件 ViewModel - 如何在测试 Activity 上模拟 ViewModel?

我正在尝试设置类似于GithubBrowserSample的 UI 测试,看起来示例项目只有模拟但没有ViewModel.FragmentActivity

这是我试图Activity通过 mocking测试的代码ViewModel。但是ViewModel之前没有onCreate()在 Activity 中设置。

有人可以帮我解决这个问题吗?

0 投票
7 回答
73382 浏览

android - 对象字段更改的 LiveData 更新

我正在使用带有 LiveData 的 Android MVVM 架构。我有一个像这样的对象

我的视图模型看起来像这样

如何确保用户对象中的某些字段更改观察者得到通知?顺便说一句,将这些数据保存在单独的对象中并且不要在我的 ViewModel 中使用诸如字符串之类的主要值对我来说很重要。

0 投票
0 回答
3327 浏览

android - CompoundView 中的 ViewModel 引用(自定义视图)

我正在MVVM使用Android Architecture ComponentsData Binding图书馆关注体系结构。

TL;博士

ViewModel在复合视图中引用对象是否违反 MVVM 架构?我查看了 Google 的示例,只看到它在 Activity/Fragment XML 中使用,但没有在自定义视图中使用。

有问题的代码

我有一个复合视图,我想在许多地方重复使用。它从 XML 实例化。此视图从用户输入中填充。我想确保用户输入的任何内容都能在方向更改后幸存下来。请考虑以下我匆忙编写的代码来说明场景:

查看型号:

餐厅选择视图:

0 投票
1 回答
6993 浏览

android - 发布或设置 MutableLiveData - 未调用观察者 onChanged

我发现了新的 android 架构组件,我想通过一个小型测试应用程序测试这对 ViewModel / LiveData。后者有两个片段(在 a 中ViewPager),第一个创建/更新卡片列表(通过 an EditText),第二个显示所有卡片。

我的视图模型:

我的第二个片段:

HashMap像我的一样MutableLiveData,更新得很好,但我的第二个片段没有通过观察者接收信息。

0 投票
2 回答
1851 浏览

java - ViewModel 如何在配置更改时保持不变

查看ViewModel文档,它说:

换句话说,这意味着如果 ViewModel 的所有者因配置更改(例如旋转)而被销毁,则不会销毁 ViewModel。所有者的新实例将重新连接到现有的 ViewModel。

如果引用它的活动被破坏,ViewModel 是如何不被破坏的?一旦我们创建了一个新的活动,它是如何重新连接的?

0 投票
1 回答
13894 浏览

android - 将 ViewModel 绑定到服务是否正确?

我已经开始在我的应用程序中使用架构组件,我仍在学习如何使用它。

在我的应用程序中,我有一个 Activity 按顺序显示不同的片段。在其中一些中,我需要与后台服务通信,以便从外部 BLE 传感器接收数据。由于我需要在多个 Fragment 中与服务交互,我想知道 ViewModel 是否是进行绑定的正确位置。我环顾四周,但没有找到答案。

在 ViewModel 中绑定服务是否有任何问题?

0 投票
1 回答
4275 浏览

java - 将数据从 ViewModel 的 AsyncTask 传递到 Calling Activity

我正在使用 Room 将项目添加到我的数据库中。

我从 AddFriendActivity 中的用户那里获得了项目的详细信息,它调用 AddFriendViewModel 的addItem (),然后调用子类 AddAsyncTask

该项目被插入,我在 AsyncTask 的doInBackground()OnPostExecute()中获得了 ID。现在我需要在我的 AddFriendActivity 中传递或获取这个 id。

我的活动:

我的 ViewModel 类与子类 AddAsyncTask:

0 投票
2 回答
2113 浏览

android - 观察从 ArrayList 中添加和删除事件

在我的应用程序中,我正在尝试使用 Android 架构库来实现 MVVM 设计模式。为此,我创建了一个ViewModel包含一些LiveData对象的类。

在我的 UI 中,用户可以添加和删除笔记。为此,我认为在我的中创建添加和删除方法NotesViewModel并直接在 ArrayList 上操作就足够了,如下所示:

我对这个解决方案的问题是我无法获得用户删除或添加的特定注释;只有整个列表。那么我该怎么做呢?我是否必须为LiveData用户可以执行的每个事件创建一个对象?还是有更好的方法来做到这一点?

0 投票
3 回答
21021 浏览

android - 我应该在 ViewModel 中包含 LifecycleOwner 吗?

我目前需要 LifecycleOwner 才能创建观察者。

我有在 ViewModel 中创建 Observer 的代码,因此我在 Fragment 中检索 ViewModel 时附加了 LifecycleOwner。

根据谷歌的文档。

注意:ViewModel 绝不能引用视图、生命周期或任何可能持有对活动上下文的引用的类。

我是否打破了该警告,如果我打破了,您建议我以什么方式移动我创建的观察者以进行数据返回?

我只做了一个观察者,所以我想知道它是否仍然有效。因为也在谷歌的文档中也说过。

ViewModel 对象可以包含 LifecycleObservers,例如 LiveData 对象。

主要片段

主视图模型

更新 1:改进了 ViewModel,感谢 @pskink 建议使用转换。