【发布时间】:2021-03-31 12:35:16
【问题描述】:
我正在 Android Studio 中开发汽车租赁 Android 应用程序。我正在研究“过滤器”选项,因此用户可以过滤可用的汽车(例如,他们可以选择仅查看 5 个座位的柴油车,或者他们可以选择仅查看全轮驱动汽车等)。我有一个名为 FilterCars 的活动,例如,用户可以按 4 个组件进行过滤:燃料、牵引力、座椅、变速箱。在他们提交过滤器后,将根据他们的偏好显示汽车。我将这些过滤器传递给 Cars 活动(其中汽车显示在 RecyclerView 中),捆绑附加功能成功,因此我在 Cars.java 中将成功用户的过滤器存储在变量“fuelType、tractionType、seatType、gearingType”中。
使用这些过滤器,我可以向 recyclerview 适配器传递如下查询:
FirebaseFirestore.getInstance().collection("Cars").whereEqualTo("fuel", fuelType).whereEqualTo("traction", tractionType).whereEqualTo("seats", seatsType).whereEqualTo("gearbox", gearboxType)
效果很好。
我的问题如下:我不想强迫用户填写所有的过滤字段,例如,如果他们只想按燃料和座位进行过滤,他们可以做到。如何进行仅包含用户选择的过滤器的复合查询?我考虑过但无法解决的一种方法是,例如,如果用户不想按牵引力进行过滤,将诸如“”(空)之类的 tractionType 存储在复合查询中而不是 tractionType查询“whereEqualTo”以放置返回所有汽车的内容,因此复合查询将仅按所选过滤器进行过滤。
有什么建议吗?或者有没有更好的方法可以避免将空答案放在复合查询中?
谢谢!
【问题讨论】:
标签: java android firebase google-cloud-firestore