在我的 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_date
您在Firebase 中处理日期的方式。所以你应该将日期存储为时间戳,它基本上是一个数字,一个值。
当我向 Firebase 实时数据库添加新值时如何保存当前日期/时间
最后,只需将所需的时间戳传递给startAt()
和endAt()
方法即可。
我知道有一个 startAt() 和 endAt() 但不确定它们是否适合 FirebaseRecyclerPagingAdapter。
您可以传递给FirebaseRecyclerPagingAdapter
任何类型的查询,包括调用startAt()
和endAt()
方法的查询。
添加回答
举报
0/150
提交
取消