【发布时间】:2018-02-24 19:56:18
【问题描述】:
我决定通过做一个简单的数据库应用程序自学 Java 和 Android。我已经以“惰性”方式实现了一些功能——所有选择都在主线程上完成。
现在我想使用 LiveData 进行选择。我已经阅读了 simplistic training guide on android developers 并使用 LiveData 和 RecyclerView 实现了 a more complex solution from codelabs guide。 整个表的插入、更新、删除和选择工作完美,但是我不知道如何将参数传递给选择。
示例:我有一个包含所有记录的可滚动列表的活动,我想对列表应用一些过滤器(搜索)。据我了解,DAO 中的实际选择方法仅调用一次(创建 ViewModel 时),所以如何使用新参数更新查询?
其他示例:我有其他活动显示记录的所有列(用于查看和编辑)。 如何将 id 传递给查询以选择单行?
我的数据库代码与this codelab中的代码不太一样
编辑:我终于这样做了:每次我想更新查询参数时,我都会从 DAO 中调用 select(通过 ViewModel 和 Repo),并将新的观察者添加到该新列表中。这个解决方案似乎不是最优的,但我想它可以工作......
【问题讨论】:
-
您可以使用 Dao 拥有多个 select 语句
-
我想过,但是假设我想要一个文本字段,用户可以在其中输入任何搜索字符串
-
所以?这里有什么问题?虽然这些不需要选择语句。
-
你的列表来自 select all 语句...然后从整个列表中过滤用户搜索的列表...并显示搜索到的列表
-
hmmm...所以基本上使用java而不是sql进行过滤...也许我会尝试。感谢您的想法
标签: android android-room