【问题标题】:FirebaseRecylcerVAdapter Sorting from Highest to LowestFirebaseRecylcerVAdapter 从最高到最低排序
【发布时间】:2018-06-11 09:27:04
【问题描述】:

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

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

【问题讨论】:

  • 请添加您的数据库结构。
  • 到目前为止你尝试了什么?
  • @AnshumanJaiswal,我是 firebase 的新手,我曾尝试使用该查询,但遇到了麻烦

标签: android firebase firebase-realtime-database firebaseui


【解决方案1】:

正如我在您的数据库中看到的,您将所有这些值存储为字符串而不是数字。当你尝试对字符串排序时,你需要知道字符串是有序的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 的评论,请参阅帖子,其中解释了您可以颠倒顺序的方式。

【讨论】:

  • 你把值从字符串改成数字了吗?
  • 在这种情况下,您需要使用我更新后的 andwer 中的查询。
  • 查询仍然会按升序读取数据。要以相反的顺序获取它们,请参阅*.com/questions/34156996/…
  • @FrankvanPuffelen 谢谢Puf!