FirebaseRecylcerVAdapter从最高到最低排序

时间:2018-06-11 09:27:05

标签: android firebase firebase-realtime-database firebaseui

我正在使用firebase recyclerAdapter来填充我的视图,并希望将这些数据从最高点到最低点进行排序。

database structure

P.S:我正在使用firebase实时数据库。

enter image description here

1 个答案:

答案 0 :(得分:0)

正如我在您的数据库中看到的那样,您将所有这些值存储为字符串而不是数字。当您尝试对字符串进行排序时,您需要知道字符串是按顺序排列的lexicographically

快速解决此问题的方法是将数据类型从字符串更改为intlong。所以对于数字,这是正常的顺序:

  • 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的评论,请参阅帖子,其中解释了您可以撤销订单的方式。