使用RealmRecyclerViewAdapter更改基础Realm时未调用notifyDataSetChanged()

时间:2016-08-22 16:53:09

标签: android realm

我在Realm中有一组数据,使用RecyclerView显示在RealmRecyclerViewAdapter中。基本上,我会在RecyclerView中显示25个元素 - 如果第一次将项目插入Realm则没有问题。如果在删除所有数据之后不立即添加Realm,它似乎正常工作,因为只有在我需要删除Realm中的所有项目然后添加新{{1}时才会出现问题不久后的项目。

我将发送新项目的http请求,收到后,我将删除Collection中当前的所有项目,然后在不同的交易中添加新项目;我也试过在同一笔交易中做这件事。

意外的行为是Realm的内容会在很短的时间内闪烁,好像所有项目都要反弹一样,我甚至可以看到新项目的数据显示为一瞬间,但RecyclerView的内容只会返回显示以前的数据 - 我知道要从RecyclerView中删除的数据。我知道它被删除了,因为如果我在闪烁之后与Realm进行交互,即使只是点击静态视图,所有项目都会立即反弹并反映已添加的新项目;就像最后调用notifyDataSetChanged()一样。

并不总是表现出这种行为。大部分时间项目都被删除,新的项目被添加,它只是完美的工作;没有闪烁。但是,只要用户行为在其正常工作并且不能正常工作时,就没有什么不同。同样的事情可以一遍又一遍地进行,有时它会起作用,而其他时候则不会。

我尝试使用RecyclerViewmRealm.deleteAll()删除项目。我尝试使用mOrderedRealmList.deleteAllFromRealm()mRealm.insert(items)将项目添加到集合中。我还尝试仅在添加项目之后手动调用mRealm.copyToRealm(items),仅在项目全部删除之后,以及在两个事件之后,但问题仍然存在。

有什么可能导致这种行为的想法吗?

这是唯一运行操作notifyDataSetChanged()数据的代码:

Realm

更新

当我删除mRealm.beginTransaction(); mOrderedRealmCollection().deleteAllFromRealm(); mRealm.commitTransaction(); ... ... processing of new items... ... ... mRealm.beginTransaction(); mRealm.insert(items); mRealm.commitTransaction(); 中的所有项目并在同一事务中添加新项目时,更频繁地发生意外行为。此外,我注意到当在同一事务中进行更改并且问题发生时,有时没有闪烁,Realm只是继续显示旧数据,不间断,但是如果我触摸{{ 1}}任何地方,就像闪烁发生时一样,所有物品都会立即反弹并反映已添加的新物品。

更新:如何设置适配器

RecyclerView

更新:取消按钮onClick()代码

RecyclerView

0 个答案:

没有答案