私はRealm findAll()
に裏打ちされたRecyclerViewを持っています。私はRealmChangeListenerを使用して更新についてのリストを通知し、鈍器のnotifyDataSetChanged()を頻繁に使用するとすべてがうまく機能します。厳密なモデル/表示の分離を伴うAndroid-Realmリスト
private RealmResults<Sale> allSales;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
....
// Update sales list whenever the AllSales result changes
allSales = getRealm().where(Sale.class).findAll();
allSalesListener = new RealmChangeListener<RealmResults<Sale>>() {
@Override
public void onChange(RealmResults<Sale> results) {
saleAdapter.notifyDataSetChanged();
}};
allSales.addChangeListener(allSalesListener);
....
しかし、私は実際のViewModelに、私のフラグメントのうち、すべてのレルムコードを保ち、良いMVVC構造を持っているしたいと思います。レルムの例はこれをしません。そして、たぶん理由があります - RealmResultsの変更をアダプターに適切に通知するためのエレガントな方法はありません。データバインディングはまだありません。 ObservableCollectionを使用してRecyclerViewをサポートすることはサポートされていないように見えますが、RealmResultはObservableCollectionではありません。
この時点で、私は自分のFragmentに "ListChangedListener"インターフェースを作成し、ViewModelのすべてのListプロパティのリスナーのコレクションを手動で維持する必要があると考えています。しかし、それはView/Model分離を維持するために非常に多くの余分なコードのように思えます。
TLDR:のRealmでサポートされているListViewまたはRecyclerViewの例を探しています。表示コードにというレルムコードはありません。あるいは、私のカスタム "リスナー"インターフェースが良い道筋であることを確信さえするだけです。
更新:私は何とかRealmRecyclerViewAdapterを見落としました。下の私の答えを見てください。