首页 > 解决方案 > 实时查询 sortByChild 按字符而不是按值排序

问题描述

对实时 Firebase 进行查询

DatabaseReference mReference = mDatabase.getReference("Cards/" + language + "/" + gameTitle); Query query = mReference.orderByChild("rank"); query.addValueEventListener

它假设对其进行排序rank并给出 1/2/3/4/5/6 值。取而代之的是它返回 1/10/11/12/13/14/15/16/17/18/19/2/20/21 等......这就是层次结构的样子(对不起俄语,但没有英语然而) 在此处输入图像描述 看起来它是按第一个字符而不是整个值排序的

标签: androidfirebase-realtime-database

解决方案


它假设按等级对其进行排序并给出 1/2/3/4/5/6 值。相反,它返回 1/10/11/12/13/14/15/16/17/18/19/2/20/21

这是正常行为,因为您根据rank属性对结果进行排序,该属性是字符串类型而不是数字。当您对字符串进行排序时,元素按字典顺序排列

有两种方法可以解决这个问题,要么使用上面答案中的我的解决方案,要么将属性类型更改为数字。在我看来,由于所有这些值都是数字,因此您应该继续使用解决方案。


推荐阅读