【发布时间】:2018-01-09 02:30:46
【问题描述】:
我有数据,结构如下:
我想以无限滚动的形式加载来自用户的数据。所以我执行一个查询:
mGamersDatabaseReference.child(gameId).orderByChild("gamelvl").limitToFirst(10)
在此之前,我想加载接下来的 10 个项目。我已经尝试使用 startAt 并使用 userId 或用户名,但这不会加载更多项目。
oldestPlayerGameLvl = myGames.getUserName();
mGamersDatabaseReference.child(gameId).orderByChild("gamelvl").limitToFirst(10).startAt(oldestPlayerGameLvl)
这不会加载任何东西,而且似乎startAt 方法仅在数字或字符串以给定字符串或数字开头而不是从子节点或节点 5 开始到子节点 10 时才有效。
//已编辑
我使用这种方法并且应该至少加载接下来的两个项目,或者我错了??
mGamersDatabaseReference
.child(gameId)
.orderByChild("gamelvl")
.startAt(0, "-L1Tg7NgZpT_7U4CiAs3") // i use this values
.limitToFirst(10)
接下来是应该的方式,
mGamersDatabaseReference
.child(gameId)
.orderByChild("gamelvl")
.startAt(oldestPlayerGameLvl, oldestPlayerKey)
.limitToFirst(10)
其中 oldesPlayerGameLvl 等于最后一个节点中“gamelvl”的值,并且 oldPlayerKey 等于同一最后一个节点中的键的值。 但是这两种方法都返回 null。
//更新 https://github.com/QaplaGaming/QaplaG/blob/master/qapla.java
【问题讨论】:
标签: java android firebase firebase-realtime-database infinite-scroll