我有一个RealmResults<Post> mPosts对象,它在社交媒体应用程序中保存用户的提要。每当用户创建新的帖子时,帖子都会自动添加到列表的开头,因为它的日期是最新的,结果是按desc顺序排列的。现在,当用户创建一个新的帖子时,帖子被添加到列表的底部;就像它是最老的帖子一样。我不知道它是什么,但我认为它是一个bug,所以我更新到了90.0版,但它仍然在发生。
我尝试过的事情:
设置Realm并在用户创建新帖子时调用realmResults = realmResults.sort("mDateCreated", Sort.DESCENDING)
设置onchange侦听器并在notifyDataSetChanged()方法中执行上述语句
我读过realmresults对象在一个新的升级之后不再按位置排序,但是在阅读了几个so、github和realm源之后,我仍然找不到任何关于如何模拟先前的按位置排序功能的决定性信息。有人知道如何维护onChangeRealmResults对象的排序吗?
更新:我还尝试使用类似于Realm 90.0RealmResults创建我的findAllSorted()对象,并尝试使用上面列出的内容。仍然不起作用。

最佳答案

解决了我的问题。我已经为Post对象创建了一个包装类,我正在通过RealmResults mPosts类中的mDateCreated对我的PostWrapper对象进行排序。因此,当存储在服务器上的PostWrapper记录的日期被设置并用于正确排序mPosts时;当它们从服务器接收并存储在与mPosts--UserFeedRealm对应的域中时。当用户在手机上创建一个新的Post对象时,我设置的是Post对象的日期,而不是它将存储在其中的PostWrapper对象的日期,因此由于mDateCreated在手机上创建的PostWrapper对象中为空,新的对象被视为PostWrapper中最早的mPosts对象。
这个问题似乎是在早期版本的Realm中开始的,没有任何原因,因为我在早期版本中实现了重新登录功能,需要创建一个PostWrapper类来保存Post对象或Repost对象。当我这样做时,我开始将PostWrapper对象存储在mPosts而不是Post对象中,并开始按创建的mPosts日期而不是它包含的PostWrapper对象的创建日期对Post进行排序;因为与它的重新发布相比,重新发布的创建日期不同。但我当时做了很多改变,所以效果没有被注意到。但本质上,这一切归结为我没有初始化必要的变量。

10-08 11:19