为了账号安全,请及时绑定邮箱和手机立即绑定

Firebase 实时数据库 - 在时间范围内获取数据

Firebase 实时数据库 - 在时间范围内获取数据

RISEBY 2023-06-08 14:37:11
在我的 Android 应用程序中,我有一个日历。当我单击一个日期时,我只想显示该选定日期的项目。换句话说,从适配器中过滤掉所有其他项目RecyclerView,只显示所选日期的项目。目前,当活动打开时,它只显示所有项目:Query query = FirebaseDatabase.getInstance().getReference().child(FB_SUBJECTS).child(FB_PACKS)PagedList.Config config = new PagedList.Config.Builder()        .setEnablePlaceholders(false)        .setPrefetchDistance(5)        .setPageSize(10)        .build();//Initialize FirebasePagingOptionsDatabasePagingOptions<FB_Model> options;options = new DatabasePagingOptions.Builder<FB_Model>()        .setLifecycleOwner(this)        .setQuery(query, config, snapshot -> {            FB_Model model = snapshot.child(FB_PROFILE).getValue(FB_Model.class);            addMarkerToCalendarView(getMilliFromDate(model.getstart_date()));            return model;        })        .build();这将返回 处的所有项目subjects/packs。然后从这个查询中,我得到一些数据<userId>/profile/,比如start_date和end_date,例如subject/packs/001/profile/start_date以下是start_date和的一些示例数据end_date:end_date; "05-04-2019"start_date: "01-04-2019"所以,我的问题是我想过滤这些项目,但我正在使用,FirebaseRecyclerPagingAdapter但一次只能拉下一定数量的项目,例如 20。所以我不能将所有结果存储在一个大列表中并过滤它们容易地。所以我依赖于 Firebase 的一些内置功能。是否有可能改变我Query来实现这一目标?我知道有一个startAt()andendAt()但不确定它们是否适合FirebaseRecyclerPagingAdapter。所以我真正需要的是 SELECT * from profiles where startDate = x and endDate = y;Android 上的实时数据库可能吗?
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

是否可以更改我的查询以实现此目的?

当然是,但有一些变化。如我所见,您将日期作为文字字符串存储在属性中,这不是end_dateFirebase 中处理日期的方式。所以你应该将日期存储为时间戳,它基本上是一个数字,一个值。

  • 当我向 Firebase 实时数据库添加新值时如何保存当前日期/时间

最后,只需将所需的时间戳传递给startAt()endAt()方法即可。

我知道有一个 startAt() 和 endAt() 但不确定它们是否适合 FirebaseRecyclerPagingAdapter。

您可以传递给FirebaseRecyclerPagingAdapter任何类型的查询,包括调用startAt()endAt()方法的查询。


查看完整回答
反对 回复 2023-06-08
  • 1 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信