Realm RealmResults <e>不再对我的数据进行就地排序

时间:2016-05-10 00:28:05

标签: java android realm

我有一个RealmResults<Post> mPosts对象,用于在社交媒体应用中保存用户的Feed。每当该用户用于创建新帖子时,该帖子将自动添加到列表的开头 - 因为其日期将是最新的,并且结果按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 个答案:

答案 0 :(得分:0)

解决了我的问题。我为int blockSize = 16; int len = iLen + blockSize - (iLen % blockSize); 个对象创建了一个包装类,我在Post类中按RealmResults mPostsmDateCreated对象进行排序。因此,虽然设置了存储在服务器上的PostWrapper条记录的日期,但它们将用于正确排序PostWrapper;当他们从服务器收到并存储在与mPosts - mPosts对应的领域时。当用户在手机上创建新的UserFeedRealm对象时,我设置的是Post对象的日期,而不是它将存储的Post对象的日期,因为{{1在手机上创建的PostWrapper对象中为空,新的被视为mDateCreated中最早的PostWrapper

问题似乎是因为它在PostWrapper的早期版本中出现,无缘无故,因为我在早期版本中实现了重新发布功能,并且需要创建一个mPosts类来保存Realm对象或PostWrapper对象。当我这样做时,我开始在Post而不是Repost个对象中存储PostWrapper个对象,并在mPosts的日期开始排序Post创建而不是它包含的mPosts对象的日期创建;因为与重新发布的帖子相比,重新发布会创建不同的日期。但是那时我做了很多改变,所以效果没有被注意到。但基本上,这一切都归结为我没有初始化必要的变量。