FirebaseRecylcerVAdapter 从最高到最低排序
FirebaseRecylcerVAdapter Sorting from Highest to Lowest
我正在使用 firebase recyclerAdapter 来填充我的视图,并希望将这些数据从最高点到最低点排序。
P.S : 我正在使用 firebase 实时数据库。
正如我在您的数据库中看到的那样,您将所有这些值存储为字符串而不是数字。当您尝试对字符串进行排序时,您需要知道字符串是按 lexicographically
.
排序的
快速解决此问题的方法是将数据类型从字符串更改为 int
或 long
。所以对于数字,这是正常顺序:
- 1308
- 1309
- 1310
- 1311
但对于字符串,这是正常顺序:
- “1308”
- “1309”
- "131"
- “1310”
据我所知,在 Firebase 中和其他数据库中都没有允许您更改此行为的运算符。相反,您将不得不修改数据以获得您想要的行为。因此,当按字典顺序排序时,请按照您需要的顺序存储值。对于数字,您可以通过用零填充它们来实现:
- "0131" //前面加零
- "0132" //之前加零
- ......
- “1308”
- “1309”
- “1310”
- “1311”
要订购结果,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference tableRef = rootRef.child("table");
Query query = tableRef.orderByChild("teamPoints");
query.addListenerForSingleValueEvent(/* ... */);
我错过了,但根据@FrankvanPuffelen 的评论,请参阅 post,其中解释了可以反转顺序的方式。
我正在使用 firebase recyclerAdapter 来填充我的视图,并希望将这些数据从最高点到最低点排序。
P.S : 我正在使用 firebase 实时数据库。
正如我在您的数据库中看到的那样,您将所有这些值存储为字符串而不是数字。当您尝试对字符串进行排序时,您需要知道字符串是按 lexicographically
.
快速解决此问题的方法是将数据类型从字符串更改为 int
或 long
。所以对于数字,这是正常顺序:
- 1308
- 1309
- 1310
- 1311
但对于字符串,这是正常顺序:
- “1308”
- “1309”
- "131"
- “1310”
据我所知,在 Firebase 中和其他数据库中都没有允许您更改此行为的运算符。相反,您将不得不修改数据以获得您想要的行为。因此,当按字典顺序排序时,请按照您需要的顺序存储值。对于数字,您可以通过用零填充它们来实现:
- "0131" //前面加零
- "0132" //之前加零
- ......
- “1308”
- “1309”
- “1310”
- “1311”
要订购结果,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference tableRef = rootRef.child("table");
Query query = tableRef.orderByChild("teamPoints");
query.addListenerForSingleValueEvent(/* ... */);
我错过了,但根据@FrankvanPuffelen 的评论,请参阅 post,其中解释了可以反转顺序的方式。