我有一个RecyclerView
显示Realm
数据库中的项目。为此,我已经实现了一个RealmRecyclerViewAdapter
基于realm-android-adapters的方法,它获得了OrderedRealmCollection
传入。为此,我加载了数据findAllAsync()
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 会将任何异步查询转换为同步查询以保持一致。请改用异步写入。
是否有可能在不引入延迟或阻止动画显示的情况下完全异步更新项目?