【问题标题】:How to sort Firebase data according to Time Created?如何根据创建时间对 Firebase 数据进行排序?
【发布时间】:2021-06-23 10:05:10
【问题描述】:

大家好,我已经使用 Query 在应用程序中从 Firebase 实时数据库加载了一些数据。

这是简单的代码:

  Query query = databaseReference.orderByChild("name").startAt(data).endAt(data + "\uf8ff");

  options = new FirebaseRecyclerOptions.Builder<HomeModel>().setQuery(query, HomeModel.class).build();

我的数据库结构很简单;

M38dJdquf4jE(the random key)
name : "John Doe"
Image : "image link"

因为orderByChild("name"),每当在数据库中插入新数据时,都不是按照插入数据的时间。相反,它以随机顺序将数据插入到 recyclerView 中。

如何解决,让插入的 Last 数据始终在 recyclerView 的最后,而不是随机插入。

【问题讨论】:

    标签: java android firebase firebase-realtime-database android-recyclerview


    【解决方案1】:

    因为orderByChild("name"),每当有一个新的Data插入到Database中,都不是按照时间来的

    使用时:

    .orderByChild("name")
    

    这意味着来自数据库的结果将根据“名称”属性中存在的值进行排序,而根据“时间”进行排序。

    相反,它以随机顺序将数据插入到 RecyclerView 中。

    如上所述,这绝对不是随机顺序。如果你需要根据加法的“时间”得到结果,那么你有两种选择。

    例如,如果“M38dJdquf4jE”是由“push()”方法提供的推送键,则可以使用 Query 的orderBykey() 方法,该方法:

    创建一个查询,其中子节点按其键排序。

    您将获得有序的结果,因为推送的键包含时间组件。

    如果这些键不是由“push()”方法提供,要根据时间组件进行排序,那么您应该添加一个“timestamp”类型的属性,如在我在以下帖子中的回答:

    一旦你有了新的属性,你就可以使用:

    .orderByChild("timestamp")
    

    使结果按升序排列。但是,如果您需要降序,则可以使用我在以下帖子中的回答:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-07
      • 1970-01-01
      • 2017-07-20
      • 2020-08-04
      • 2018-08-09
      • 2012-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多