RecyclerView
データベースのアイテムを表示する がありますRealm
。そうするために、渡されたrealm-android-adaptersRealmRecyclerViewAdapter
に基づいて実装しました。このために、データをロードします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 は、一貫性を保つために非同期クエリを同期クエリに変換します。代わりに非同期書き込みを使用してください。
ラグを導入したり、アニメーションの表示を妨げたりすることなく、アイテムを完全に非同期に更新する可能性はありますか?