2017-07-11 64 views
4

我们想为一个房间数据库建立一个过滤器,用户在过滤器选项中选择过滤器。有没有办法动态查询数据库

即 我们有场(ID,姓名,日期,类型)的实体 用户之间可能通过日期筛选列表和/或域名包含文本和/或类型等于什么

是否有在房间里做到这一点?

+0

我想你去老式的路线:https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase.html#query(java.lang.String,%20java.lang.Object []) – CommonsWare

+0

这是一种解决方案,谢谢CommonsWare –

回答

3

我很抱歉地说,目前这是不可能的,你想要的方式。

我已经设法通过使用db.query(query, values)方法。在运行时生成您的查询字符串(使用占位符'?'),并传递一组运行时生成的值。请注意,这将返回Cursor,而不是您想要的特定对象的实例,因此您必须定义将Cursor映射到POJO的方法。

我附加了一些链接到我的Cursor2Pojo Mapper和一个实现它的项目。随意使用它,因为它应该以一种有点儿的方式解决你的问题。它支持列表和单一实例的回报,但需要你增加更多的注解类(房间注解类绑定,所以你无法通过在运行时反射让他们)

Cursor2Pojo custom lib

Project Implementation at line 66 - 72

+0

该死的,能够在注释@Query(“...”)中动态定义表格会很好。无论如何,谢谢你的提示! –

+0

没问题。他们现在正在研究它,所以这只是时间问题:D –

相关问题