我有一个 RealmResults<Post> mPosts
在社交媒体应用程序中保存用户提要的对象。每当该用户创建新的post时,post都会自动添加到列表的开头,因为它的日期是最新的,并且结果是按desc顺序排列的。现在,当用户创建一个新帖子时,该帖子被添加到列表的底部;就好像这是最古老的职位。这只是在旧版本的 Realm
我有,不知道是什么,但我认为这是一个错误,所以我更新到版本90.0,但它仍然在发生。
我尝试过的事情:
设置 realmResults = realmResults.sort("mDateCreated", Sort.DESCENDING)
打电话来 notifyDataSetChanged()
每当用户创建新帖子时
设置onchange侦听器并在 onChange
方法
我已经读到realmresults对象在新的升级之后不再进行就地排序,但是在阅读了几个so、github和realm源代码之后,我仍然找不到任何关于如何模拟以前的就地排序功能的结论性信息。有没有人知道如何保持分类 RealmResults
中的对象 Realm 90.0
?
更新:我也尝试过创建我的 RealmResults
对象使用 findAllSorted()
就像 RealmResults<Post> mPosts = realm.where(Post.class).findAllSorted("mDateCreated", Sort.DESCENDING)
,并尝试了我上面列出的东西。还是不行。
1条答案
按热度按时间cx6n0qe31#
解决了我的问题。我已经为创建了一个 Package 器类
Post
我在整理我的RealmResults mPosts
对象mDateCreated
在PostWrapper
班级。所以,虽然PostWrapper
服务器上存储的记录已设置,并将用于排序mPosts
正确地;当它们从服务器接收并存储在mPosts
--UserFeedRealm
. 当用户创建新的Post
在他们的电话里,我正在设定Post
对象,但不是PostWrapper
对象,因为mDateCreated
在中为空PostWrapper
在手机上创建的对象,新的被视为最旧的PostWrapper
s在mPosts
.这个问题似乎是从早期版本的
Realm
,这是因为我在早期版本中实现了重新发布功能,并且需要创建一个PostWrapper
持有Post
物体或物体Repost
对象。当我这么做的时候,我开始储存PostWrapper
中的对象mPosts
而不是Post
对象,并开始排序mPosts
由PostWrapper
的日期而不是Post
对象的创建日期;因为一个重新发布会有一个不同的日期创建相比后,它的重新发布。但当时我做了很多改变,所以效果没有引起注意。但本质上,这一切归结为我没有初始化必要的变量。