在我的Firestore数据库中,我的字段索引为no,数据类型为字符串,但他的数据为数字,例如1、2、3等。

collectionReference
     .orderBy("indexNo", Query.Direction.DESCENDING)


输出正常,直到9为止的9,即10、11、12的数据显示为1、10、11、12、2、3等。

请帮我解决它,因为这些数字将决定回收者视图中cardview物品的排列方式。

谢谢...

最佳答案

如果indexNo属性的数据类型为String类型,并且要使用Query.Direction.DESCENDING排序结果,则该结果将不是被删除的值,因为当您订购字符串时,结果是按字典顺序排序的。有两种方法可以解决此问题。第一个方法是将属性的数据类型从String更改为number,我个人建议这样做。

这是数字的正常顺序:


1308
1309
1310
1311


这是字符串的正常顺序:


“ 1308”
“ 1309”
“ 131”
“ 1310”


第二种方法是修改数据以获得所需的行为。对于数字,可以通过用零填充数字来实现,如下例所示:


“ 0131” //之前加零
“ 0132” //之前加零
......
“ 1308”
“ 1309”
“ 1310”
“ 1311”

09-19 04:06