使用recyclerview的firebase android分页

嘿我正在开发一个应用程序,它将显示我每天在firebase数据库上添加的最新数据.最新数据应显示在recyclerview中.以下是firebase上节点的外观

让我们假设目前数据库中有100个节点.当app打开时,它获得节点100到80中的数据存储.当用户向下滚动时,它获得存储在节点79到59中的更多最新数据,依此类推.

现在我可以使用此查询获取最后20个节点

Query jokesQuery = FirebaseDatabase.getInstance().getReference().child("hindi-jokes").orderByKey().limitToLast(20);

如果我修改查询以限制最后21个项目,我可以得到位置79的节点的密钥,但是如何使用第79个节点密钥获得下一组节点数据,即从第79到第59?

解决方法

您将使用endAt(),因为您希望将最后一项返回为您之前获得的“最旧”项.
DatabaseReference jokesRef = FirebaseDatabase.getInstance().getReference().child("hindi-jokes");
Query jokesQuery = jokesRef.orderByKey().endAt(oldestKeyYouveSeen).limitToLast(20);

最古老的KeyYouveSeen被称为锚.您需要在代码中自行跟踪:将其设置为您看过的最旧项目的键.

请注意,它将在第一个查询中和第二个查询中,因此您必须在代码中明确地将其排除一次.

相关文章

Android 如何解决dialog弹出时无法捕捉Activity的back事件 在...
Android实现自定义带文字和图片的Button 在Android开发中经常...
Android 关于长按back键退出应用程序的实现最近在做一个Andr...
android自带的时间选择器只能精确到分,但是对于某些应用要求...