2017-05-26 3 views
1

MVVCパターンを使用していますが、コントローラでMain以外のスレッド内のオブジェクトのリストを取得しています。その後、メインスレッドで今度はRecyclerViewを新しく取得したオブジェクトで更新することに気付きました。レルムからリストを取得した後、RecyclerViewを塗りつぶすのに最適なパターンは何ですか?

Realm管理対象オブジェクトは、作成されたスレッドの外側で操作できないという例外が頻繁に発生します。コントローラ上のスレッドで作成され、メインスレッドに追加されているためです。これにより、オブジェクトが追加/削除されるたびに、またはリスト全体がリフレッシュされるたびに、リストを更新しようとするとエラーが発生します。

これらの状況でRealmを使用する最良の方法は何ですか?

+2

https://github.com/realm/realm-android-adapters/blob/master/adapters/src/main/java/io/realm/RealmRecyclerViewAdapter.javaそれでもI –

+0

質問に記載されているパターンを使用すると、不正なスレッドからRealmにアクセスすること –

+1

管理されたRealmObjectsをスレッド間で送信を停止し、提供された回答に頼ります – EpicPandaForce

答えて

1

これは、オブジェクトが追加/削除されたとき、またはリスト全体がリフレッシュされるときに、リストを更新しようとするときにエラーが発生します。自動的に変更が(任意のスレッド上の任意の書き込みによって)データセットに発生するアダプタを通知OrderedRealmCollectionChangeListenerを管理(UIスレッド上で)

使用RealmRecyclerViewAdapter

のドキュメントを参照してください:https://realm.io/docs/java/latest/#adapters

関連する問題