Java Android-Firebase OrderByChild使应用程序崩溃

Java Android-Firebase OrderByChild使应用程序崩溃,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,在我的firebase中有以下评论- 我想在RecyclerView中按降序显示它们。所以,正如你们所看到的,我在每条评论的日期中都加了“-” 然后我就用了- query.orderByChild("date").limitToFirst(10); 这很好用。 但我想分页,所以当用户单击“加载更多”时,它应该加载更多。 为此,我正在存储最后一个注释Id,并尝试了类似的操作- query.orderByChild("date").startAt(lastCommentId).limitToFi

在我的firebase中有以下评论-

我想在RecyclerView中按降序显示它们。所以,正如你们所看到的,我在每条评论的日期中都加了“-”

然后我就用了-

query.orderByChild("date").limitToFirst(10);
这很好用。 但我想分页,所以当用户单击“加载更多”时,它应该加载更多。 为此,我正在存储最后一个注释Id,并尝试了类似的操作-

query.orderByChild("date").startAt(lastCommentId).limitToFirst(10);
query.orderByKey().startAt(lastCommentId).limitToFirst(10);
它不起作用,甚至不产生结果。我还试图改变startAt和orderByChild的位置,但没有成功。 然后我尝试了这样的东西-

query.orderByChild("date").startAt(lastCommentId).limitToFirst(10);
query.orderByKey().startAt(lastCommentId).limitToFirst(10);
这很好,但我想按日期顺序排列。所以

query.orderByKey().startAt(lastCommentId).orderByChild("date").limitToFirst(10);
但这会使我的应用程序崩溃。我不明白它为什么不起作用。我还试图改变orderByChild的位置,但结果相同

有谁能解释一下问题出在哪里,并为我想做的事提出更好的解决方案吗

谢谢

回答

我对这个主题做了更多的研究,因为这是firebase的常见问题之一。我找到了这个视频


希望这有帮助

要获得第二页的结果,您需要两件事:

  • 开始日期的日期值
  • 要从中开始的项的键
  • 如果有多个项目具有相同的日期,则钥匙可用作联系断路器

    如果两个都有,查询将如下所示:

    query.orderByChild("date").startAt(lastDate, lastCommentId).limitToFirst(10);
    
    另见:


    要获得第二页的结果,您需要两件事:

  • 开始日期的日期值
  • 要从中开始的项的键
  • 如果有多个项目具有相同的日期,则钥匙可用作联系断路器

    如果两个都有,查询将如下所示:

    query.orderByChild("date").startAt(lastDate, lastCommentId).limitToFirst(10);
    
    另见:


    logcat/stacktrace以查看错误?您传入的
    lastCommentId
    的值是多少?@pleft我正在执行此操作的活动崩溃,并且它再次启动我的主活动,从而重新启动logcat@FrankvanPuffelen最后一个Id-“-KvrIDhAV4qrMSodrAa7”。它在数据中间的某个地方。@Zicsus在这里查看这是否有助于查看您的日志并用它更新您的问题。logcat/stacktrace查看错误?您传入的
    lastCommentId
    的值是多少?@pleft我正在执行此操作的活动崩溃,它再次启动我的主活动,从而重新读取logcat@FrankvanPuffelen最后一个Id-“-KvrIDhAV4qrMSodrAa7”。它在数据中间的某个地方。@Zicsus在这里查看这是否有助于查看您的日志并用它更新您的问题。