【问题标题】:running firebase query onClick and updating RecyclerView with results运行 firebase 查询 onClick 并使用结果更新 RecyclerView
【发布时间】:2019-02-05 08:18:29
【问题描述】:

我正在尝试在我的 firebase 数据库上运行查询,以便仅返回那些时间戳 = 日期选择器中指定的日期的结果(请参见应用程序图片)我希望在按下查看记录时运行此查询按钮

[![Firebase][3]][3]

我目前能够将所有对象打印到回收器视图中,但是当尝试运行我的查询时,它没有产生任何结果,没有错误,也没有调试错误

如果我需要提供更多详细信息,请告诉我

[3]:https://i.stack.imgur.com/d2uu2.png

【问题讨论】:

  • 这一行date的值是多少databaseReference.orderByChild("timestamp").equalTo(date)
  • 日期是文本框转成字符串的值,String date = mDisplayDate.getText().toString().trim();发布 toast 消息时,字符串显示为 04-02-2019(或设置的任何日期)
  • 它看起来怎么样?请提供该日期的字符串表示形式。
  • "04-02-2017" 或使用日期选择器设置的任何日期
  • 现在添加了一张图片,说明它目前的外观(显示日期值的 toast 消息)

标签: java android firebase android-recyclerview


【解决方案1】:

要解决这个问题,请更改以下代码行:

options = new FirebaseRecyclerOptions.Builder<Records>().setQuery(databaseReference, Records.class).build();

options = new FirebaseRecyclerOptions.Builder<Records>().setQuery(query, Records.class).build();
//                                                                ^   ^

您必须将query 对象和不是 databaseReference 对象传递给setQuery() 方法,因为查询对象实际上会过滤您的数据。

编辑:

根据您的评论:

是的,它在硬编码时工作,但在将文本视图转换为字符串时它不工作

这意味着传递查询对象可以解决问题,但问题仍然在于如何将数据转换为字符串。要解决这个问题,请确保date 的字符串表示类型为:04-02-2017,您的问题将得到解决。

【讨论】:

  • 仍然不高兴,我相信这是我如何创建字符串日期的问题,如果我手动将查询更改为 Query query = databaseReference.orderByChild("timestamp").equalTo("04-02 -2019");它工作正常,但是在那个日期卡住了
  • databaseReference.orderByChild("timestamp").equalTo("04-02-2017")这样对日期进行硬编码是否有效?
  • 是的,它在硬编码时工作,但在将文本视图转换为字符串时它不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 1970-01-01
相关资源
最近更新 更多