如何获取dataSnapshot中包含的项目的索引

时间:2019-02-25 13:59:28

标签: android firebase-realtime-database

我有一个查询,该查询返回根据特定条件排序的元素列表(返回到DataSnapShot),并且我想知道该列表中某个特定项目(其ID,我知道)所占据的位置而无需进行操作依次浏览清单中的所有项目,如下所示:

for (DataSnapshot postSnapshot: dataSnapshot.getChildren ()) {....}

因为如果我的列表变长,此指令将花费很长时间。

是否有更快的方式访问此项目?

1 个答案:

答案 0 :(得分:0)

没有内置操作可获取快照中子节点的索引,因此您必须自己进行操作。如果您只需要一项,则只需在循环中保留一个计数器即可。但是,如果要执行常规查找,则可能需要以允许更快查找的方式存储子节点。

例如,FirebaseUI库中的FirebaseArray class保留了List个子快照,以允许基于索引的高效查找。

许多开发人员保留两个列表:一个带有键,一个带有child.getValue(...)对象。但是我个人发现,使这两个同步保持更大的负担,而不是它带来的性能优势。不过是YMMV。