我有一个RealmResults<Post> mPosts
对象,用于在社交媒体应用中保存用户的Feed。每当该用户用于创建新帖子时,该帖子将自动添加到列表的开头 - 因为其日期将是最新的,并且结果按DESC顺序排序。现在,当用户创建新帖子时,帖子会添加到列表的底部;被视为最老的帖子。这刚开始发生在Realm
的旧版本中,我不知道它是什么,但我认为这是一个错误,所以我更新到版本90.0,但它仍然在发生。
我尝试的事情:
realmResults = realmResults.sort("mDateCreated", Sort.DESCENDING)
并在用户创建新帖子时调用notifyDataSetChanged()
onChange
方法我已经读过RealmResults对象在新的升级之后不再就地排序,但在阅读了几个SO,github和Realm源之后,我仍然无法找到关于如何模仿以前的就地排序功能。有人知道如何维护RealmResults
中的Realm 90.0
对象的排序吗?
更新:我还尝试使用像RealmResults
这样的findAllSorted()
来创建我的RealmResults<Post> mPosts = realm.where(Post.class).findAllSorted("mDateCreated", Sort.DESCENDING)
对象,并尝试使用我上面列出的内容。仍然没有工作。
答案 0 :(得分:0)
解决了我的问题。我为int blockSize = 16;
int len = iLen + blockSize - (iLen % blockSize);
个对象创建了一个包装类,我在Post
类中按RealmResults mPosts
对mDateCreated
对象进行排序。因此,虽然设置了存储在服务器上的PostWrapper
条记录的日期,但它们将用于正确排序PostWrapper
;当他们从服务器收到并存储在与mPosts
- mPosts
对应的领域时。当用户在手机上创建新的UserFeedRealm
对象时,我设置的是Post
对象的日期,而不是它将存储的Post
对象的日期,因为{{1在手机上创建的PostWrapper
对象中为空,新的被视为mDateCreated
中最早的PostWrapper
。
问题似乎是因为它在PostWrapper
的早期版本中出现,无缘无故,因为我在早期版本中实现了重新发布功能,并且需要创建一个mPosts
类来保存Realm
对象或PostWrapper
对象。当我这样做时,我开始在Post
而不是Repost
个对象中存储PostWrapper
个对象,并在mPosts
的日期开始排序Post
创建而不是它包含的mPosts
对象的日期创建;因为与重新发布的帖子相比,重新发布会创建不同的日期。但是那时我做了很多改变,所以效果没有被注意到。但基本上,这一切都归结为我没有初始化必要的变量。