【发布时间】:2016-05-10 00:28:04
【问题描述】:
我有一个 RealmResults<Post> mPosts 对象,它在社交媒体应用程序中保存用户的提要。每当该用户过去创建新帖子时,该帖子都会自动添加到列表的开头——因为它的日期是最新的,并且结果是按 DESC 顺序排列的。现在,当用户创建新帖子时,该帖子将添加到列表底部;就好像它是最古老的帖子一样对待。这刚刚开始发生在旧版本的Realm 中,我不确定它是什么,但我认为这是一个错误,所以我更新到版本 90.0,但它仍然在发生。
我尝试过的事情:
- 设置
realmResults = realmResults.sort("mDateCreated", Sort.DESCENDING)并在用户创建新帖子时调用notifyDataSetChanged() - 设置 onChange 监听器并在
onChange方法中执行上述语句
我读过 RealmResults 对象在新升级后不再就地排序,但是在阅读了几个 SO、github 和 Realm 源之后,我仍然找不到任何关于如何模仿以前的结论性信息就地排序功能。有人知道如何在Realm 90.0 中维护RealmResults 对象的排序吗?
更新:我还尝试使用findAllSorted() 像RealmResults<Post> 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对象进行排序时,帖子会按升序显示,但是所有新帖子,而不是像结果按降序排序时那样排到末尾,新帖子显示在开头。