gpt4 book ai didi

android - 在Firestore中使用分页时,如何获取正确的newIndex?

转载 作者:行者123 更新时间:2023-12-02 13:16:41 25 4
gpt4 key购买 nike

我已经根据文档实现了分页。我在我的项目中使用以下代码:

override fun onEvent(querySnapshot: QuerySnapshot?, e: FirebaseFirestoreException?) {
if (e != null) return

for (documentChange in querySnapshot!!.documentChanges) {
value = when (documentChange.type) {
Type.ADDED -> {
Log.d("TAG", "oldIndex:" + documentChange.oldIndex + "/" + "newIndex:" + documentChange.newIndex)
}
Type.MODIFIED -> {
Log.d("TAG", "oldIndex:" + documentChange.oldIndex + "/" + "newIndex:" + documentChange.newIndex)
}
Type.REMOVED -> {
Log.d("TAG", "oldIndex:" + documentChange.oldIndex + "/" + "newIndex:" + documentChange.newIndex)
}
}
}
}
当我使用此查询获取前4个用户时:
var query: Query = db.collection("users")
.orderBy("name", DESCENDING)
.limit(4)
我得到:
A/oldIndex:-1/newIndex:0
B/oldIndex:-1/newIndex:1
C/oldIndex:-1/newIndex:2
D/oldIndex:-1/newIndex:3
这是正确的,因为所有用户都是新用户,并且oldIndex等于-1。 newIndex从0递增到3,这也是正确的。但是,当我使用此查询时:
var secondQuery: Query = db.collection("users")
.orderBy("name", DESCENDING)
.startAfter(lastVisibleUser)
.limit(4)
要获得接下来的4位用户,我得到:
E/oldIndex:-1/newIndex:0
F/oldIndex:-1/newIndex:1
G/oldIndex:-1/newIndex:2
H/oldIndex:-1/newIndex:3
用户名正确的地方,oldIndex还是正确的,但是newIndex应该从0开始, 而不是从4开始。如何第二次获得正确的newIndex?

最佳答案

将为快照获取的索引与相同侦听器的的先前快照进行比较。由于您触发了一个新查询,因此它是一个新的侦听器,因此所有索引都基于一个空的先前状态。
要查看索引如何完成的工作,请将永久侦听器附加到查询中,然后在第一个查询中更改一个用户的名称,以使其更改其在结果中的位置。您将看到所有用户的先前索引和新索引将根据先前快照和新状态进行更新。

关于android - 在Firestore中使用分页时,如何获取正确的newIndex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63034510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com