java Firestore按降序排序
在我的Firestore数据库中,我有字段索引no,数据类型是string,但数据是数字,如1、2、3等等
collectionReference
.orderBy("indexNo", Query.Direction.DESCENDING)
在9之前输出正常,9之后,即对于10、11、12,数据显示为1、10、11、12、2、3等
请指导我解决这个问题,因为这些数字将决定cardview项目在recycler view中的排列
谢谢
# 1 楼答案
最好将数据类型从字符串更改为整数。我做到了。 谢谢你的支持
# 2 楼答案
由于数据类型是string,因此排序是字典式的。把数字想象成字母表。0=A,1=B,2=C。。。当比较9和10时,把它想象成比较单词“I”和“BA”。在字典里,你希望哪个先出现
# 3 楼答案
如果
indexNo
属性的数据类型是String类型,并且如果希望使用Query.Direction.DESCENDING
对结果进行排序,则结果将不是预期的结果,因为在对字符串进行排序时,结果是按字典顺序排列的。有两种方法可以解决这个问题。第一种方法是将属性的数据类型从字符串改为数字,我个人建议这样做这是数字的正常顺序:
这是字符串的正常顺序:
第二种方法是修改数据以获得所需的行为。对于数字,可以通过用零填充来实现,如下例所示: