realmrealmresults< e>不再对数据进行原位排序

k3bvogb1  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(308)

我有一个 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) ,并尝试了我上面列出的东西。还是不行。

cx6n0qe3

cx6n0qe31#

解决了我的问题。我已经为创建了一个 Package 器类 Post 我在整理我的 RealmResults mPosts 对象 mDateCreatedPostWrapper 班级。所以,虽然 PostWrapper 服务器上存储的记录已设置,并将用于排序 mPosts 正确地;当它们从服务器接收并存储在 mPosts -- UserFeedRealm . 当用户创建新的 Post 在他们的电话里,我正在设定 Post 对象,但不是 PostWrapper 对象,因为 mDateCreated 在中为空 PostWrapper 在手机上创建的对象,新的被视为最旧的 PostWrapper s在 mPosts .
这个问题似乎是从早期版本的 Realm ,这是因为我在早期版本中实现了重新发布功能,并且需要创建一个 PostWrapper 持有 Post 物体或物体 Repost 对象。当我这么做的时候,我开始储存 PostWrapper 中的对象 mPosts 而不是 Post 对象,并开始排序 mPostsPostWrapper 的日期而不是 Post 对象的创建日期;因为一个重新发布会有一个不同的日期创建相比后,它的重新发布。但当时我做了很多改变,所以效果没有引起注意。但本质上,这一切归结为我没有初始化必要的变量。

相关问题