作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经根据文档实现了分页。我在我的项目中使用以下代码:
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/
在 VB6 中,我有一行代码不会在 .NET 中转换,而且我不确定正确的成员应该是什么。错误是“NewIndex 不是 system.windows.forms.combobox 的成员” 代码: V
我正在使用 Firestore 的 Web API 对格式化为字符串的日期属性 (“2017-12-30”) 执行简单的查询。我使用 onSnapshot() 方法作为监听器来订阅文档更改。结果列表的
我是一名优秀的程序员,十分优秀!