我有一个RecyclerView
,它显示来自Realm
数据库的项目。 要做到这一点我已经实现了一个基于realm-android-adapters一个RealmRecyclerViewAdapter
它得到一个OrderedRealmCollection
传入。 为此,我加载数据与findAllAsync()
在onClick后正确更新RealmModel而不会阻止Android中的UI
realm.where(Entry.class).findAllAsync()
当通过列表中的用户滚动他有权选择“最喜爱的“一些条目,我已经在”最喜欢的“按钮上使用正常的OnClickListener
实施。
现在我很想更新用户单击按钮时条目的“最喜欢”布尔值。用户点击后,按钮上会显示一个小动画。
为此,我试过这可悲的是给出了一个错误的线程例外的情况如下:
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
entry.setLiked(!entry.isLiked());
}
});
当我与正常executeTransaction
这将工作尝试了一种选择,但防止动画被显示。
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
entry.setLiked(!entry.isLiked());
}
});
作为一个有趣的除了本提供了以下日志:
混合与当地的写入异步查询应该避免。 Realm会将任何异步查询转换为同步以保持一致。改用异步写入。
是否有任何可能性更新项目完全异步,而不引入延迟或阻止显示动画?
你是正确的它只是涉及到'adapter.notifyDataSetChanged()'防止应用程序。完全忽略了这一点,每次我更新时也会触发。谢谢 – mikepenz