相关疑难解决方法(0)

最佳实践:使用Room和LiveData运行时过滤器

我正在使用回收器显示Room wrapped DB的内容的屏幕上.适配器从ViewModel获取LiveData,该ViewModel隐藏Room DAO对象上的查询调用.因此,LiveData对象实际上是一个ComputableLiveData对象,它知道Room DB的更改.

现在我想在屏幕上添加过滤器选项.我在何处/如何在Room-LiveData-ViewModel设置中实现此功能?

适配器或ViewModel应该"postfilter"结果在LiveData中吗?我是否应该为每次过滤器更改从房间重新查询数据?我可以重用底层(可计算)LiveData吗?如果没有,我是否真的应该为每个过滤器更改创建新的LiveData?

此处讨论了类似的问题:使用Room,ViewModel和LiveData更改数据后重新加载RecyclerView

android mvvm android-room android-livedata

14
推荐指数
2
解决办法
7133
查看次数

Android Room LiveData选择查询参数

这是我在Stack上的第一个问题.多年来一直在使用它,但我从未问过问题 - 我总是能够在现有问题(或整个互联网上的其他各种网站)上找到解决方案.但是我现在几天都找不到或想出一个解决方案.

我决定通过一个简单的数据库应用程序自学Java和Android.我已经以"懒惰"方式实现了一些功能 - 所有选择都在主线程上完成.

现在我想使用LiveData进行选择.我已经阅读了关于android开发人员简单培训指南,并使用LiveData和RecyclerView 从codelabs指南实现了更复杂的解决方案.整个表的插入,更新,删除和选择工作完美无缺,但我不知道如何传递参数来进行选择.

示例:我有一个活动,其中包含所有记录的可滚动列表,我想将一些过滤器应用于列表(搜索).根据我的理解,DAO的实际select方法只被调用一次(创建ViewModel时),那么如何使用新参数更新查询?

其他示例:我有其他活动显示记录的所有列(用于查看和编辑).如何将id传递给查询以选择单行?

我的数据库代码与代码库中的代码相同

编辑:我终于做到了这样:每次我想更新查询参数时,我都会调用DAO中的select(通过ViewModel和Repo),并为该新列表添加一个新的观察者.这个解决方案似乎不是最佳的,但我猜它有效......

android android-room

10
推荐指数
1
解决办法
4134
查看次数

标签 统计

android ×2

android-room ×2

android-livedata ×1

mvvm ×1