我在Realm
中有一组数据,使用RecyclerView
显示在RealmRecyclerViewAdapter
中。基本上,我会在RecyclerView
中显示25个元素 - 如果第一次将项目插入Realm
则没有问题。如果在删除所有数据之后不立即添加Realm
,它似乎正常工作,因为只有在我需要删除Realm中的所有项目然后添加新{{1}时才会出现问题不久后的项目。
我将发送新项目的http请求,收到后,我将删除Collection
中当前的所有项目,然后在不同的交易中添加新项目;我也试过在同一笔交易中做这件事。
意外的行为是Realm
的内容会在很短的时间内闪烁,好像所有项目都要反弹一样,我甚至可以看到新项目的数据显示为一瞬间,但RecyclerView
的内容只会返回显示以前的数据 - 我知道要从RecyclerView
中删除的数据。我知道它被删除了,因为如果我在闪烁之后与Realm
进行交互,即使只是点击静态视图,所有项目都会立即反弹并反映已添加的新项目;就像最后调用notifyDataSetChanged()一样。
并不总是表现出这种行为。大部分时间项目都被删除,新的项目被添加,它只是完美的工作;没有闪烁。但是,只要用户行为在其正常工作并且不能正常工作时,就没有什么不同。同样的事情可以一遍又一遍地进行,有时它会起作用,而其他时候则不会。
我尝试使用RecyclerView
和mRealm.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
RecyclerView