【问题标题】:How to paginate firebase from the last items to the first?如何将firebase从最后一个项目分页到第一个?
【发布时间】:2017-03-06 23:50:16
【问题描述】:

我正在尝试让 firebase 分页正常工作,但我希望首先获得最新的项目,然后是稍旧的项目,我尝试使用它,但似乎无法获得新的值,不断传递相同的值...我正在传递到 endAt 的字符串 ID,即路径 Projects > projectId > moreinfo

mDatabase.child("projects").orderByChild("viewCount").limitToLast(25).endAt(offSet.get("first")).addValueEventListener(new ValueEventListener() {

我尝试将其切换到 startAt,但我什至没有得到结果...有什么想法吗?

【问题讨论】:

  • 嘿伙计,你能用 firebase 实现这个吗?
  • 是的,请参阅下面的答案,这就是我解决它的方法,可能需要一些数据库重组
  • 嗨 Lion,我正在尝试进行分页,但 Firebase 总是给我相同的结果。如果你能帮助我,我已经打开了一个主题 (stackoverflow.com/questions/45997375/…)。如果不行,能把代码放上去吗?

标签: android firebase pagination firebase-realtime-database


【解决方案1】:

偏移量必须与用于 orderByChild 的键相同 - 这就是它不起作用的原因,因此将用于 viewCount 的 HashMap 的 endAt(offSet.get("first")) 值更改

【讨论】:

  • 你能把代码贴出来吗?我想我和你有同样的问题
【解决方案2】:

解决方案 1

在为项目设置值时,您必须另外设置一个属性为 timeStump。

projects.setTimeStump(System.currentTimeMillis());

那么你可以这样查询

Query query=myRef.orderByChild("timeStump").limitToLast(50);

解决方案 2

在设置项目时,您可以将 firebase 的 .priority 变量设置为

item.setWithPriority(yourObject, 0 - Date.now());

并像查询它一样

Query query=myRef.child('projects').startAt().limit(20);

【讨论】:

  • 我目前正在通过其他称为 viewCount 的整数对其进行排序,因此我需要按视图计数的顺序排列它,但我希望首先显示最高视图...我正在尝试使用对您在解决方案 1 中所做的分页进行的偏移不是分页,而是抓取我已经完成的最后 50 个...
猜你喜欢
  • 1970-01-01
  • 2020-11-23
  • 2011-08-06
  • 1970-01-01
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 2018-01-05
  • 2018-08-16
相关资源
最近更新 更多