【问题标题】:Realm RealmResults<E> no longer sorts my data in-placeRealm RealmResults<E> 不再对我的数据进行就地排序
【发布时间】:2016-05-10 00:28:04
【问题描述】:

我有一个 RealmResults&lt;Post&gt; mPosts 对象,它在社交媒体应用程序中保存用户的提要。每当该用户过去创建新帖子时,该帖子都会自动添加到列表的开头——因为它的日期是最新的,并且结果是按 DESC 顺序排列的。现在,当用户创建新帖子时,该帖子将添加到列表底部;就好像它是最古老的帖子一样对待。这刚刚开始发生在旧版本的Realm 中,我不确定它是什么,但我认为这是一个错误,所以我更新到版本 90.0,但它仍然在发生。

我尝试过的事情:

  • 设置realmResults = realmResults.sort("mDateCreated", Sort.DESCENDING) 并在用户创建新帖子时调用notifyDataSetChanged()
  • 设置 onChange 监听器并在onChange 方法中执行上述语句

我读过 RealmResults 对象在新升级后不再就地排序,但是在阅读了几个 SO、github 和 Realm 源之后,我仍然找不到任何关于如何模仿以前的结论性信息就地排序功能。有人知道如何在Realm 90.0 中维护RealmResults 对象的排序吗?

更新:我还尝试使用findAllSorted()RealmResults&lt;Post&gt; mPosts = realm.where(Post.class).findAllSorted("mDateCreated", Sort.DESCENDING) 创建我的RealmResults 对象,并尝试使用上面列出的内容。还是不行。

【问题讨论】:

  • 第一次创建RealmResults时请查看github.com/realm/realm-java/issues/2710,创建时使用findAllSorted()RealmResults.sort() 将创建一个新的 ReaulResults 并对其进行排序。
  • 忘了提了,不过我也试过了
  • 能否分享一些与创建RealmResults 和监听器相关的源代码?
  • @beeender 你到底想看什么?我会帮你拿的
  • @beeender 是的,领域按日期排序对象的方式肯定有问题。这就是正在发生的事情。我有一堆按降序排列的帖子,所以最新的帖子在开头。当我创建一个新帖子时,它会在最旧的帖子之后结束。但是,当我像findAllSorted("mDateCreated", Sort.ASCENDING) 这样按升序对RealmResults 对象进行排序时,帖子会按升序显示,但是所有新帖子,而不是像结果按降序排序时那样排到末尾,新帖子显示在开头。

标签: java android realm


【解决方案1】:

解决了我的问题。我为Post 对象创建了一个包装类,并且我在PostWrapper 类中按mDateCreated 对我的RealmResults mPosts 对象进行了排序。因此,虽然设置了存储在服务器上的 PostWrapper 记录的日期,并将用于正确排序 mPosts;当它们从服务器接收并存储在与mPosts 对应的领域中时——UserFeedRealm。当用户在他们的手机上创建了一个新的Post 对象时,我设置了Post 对象的日期,但没有设置它将被存储在其中的PostWrapper 对象,所以因为mDateCreated 在@987654333 中为空在手机上创建的@对象,新对象被视为mPosts中最旧的PostWrappers。

这个问题似乎始于早期版本的Realm,无缘无故,因为我在早期版本中实现了转发功能,并且需要创建一个PostWrapper 类来保存@987654338 @ 对象或Repost 对象。当我这样做时,我开始将PostWrapper 对象存储在mPosts 而不是Post 对象中,并开始按PostWrapper 的创建日期而不是它包含的Post 对象的创建日期对mPosts 进行排序;因为与转发的帖子相比,转发的创建日期不同。但当时我做了很多改变,所以效果没有被注意到。但本质上,这一切都归结为我没有初始化必要的变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2021-06-13
    • 1970-01-01
    • 2011-12-20
    • 2011-02-11
    • 2020-09-11
    相关资源
    最近更新 更多