2017-10-17 6 views
0

Ich habe eine Liste von Objekten, die ich in Echtzeit aktualisiere (einmal pro Sekunde). Ich habe meine App so entworfen, dass sie eine MVVM-Architektur und die Android DataBinding-Bibliothek verwendet. Ich habe das Ansichtsmodell an die Ansicht gebunden, und alles wird bei jedem Neuladen der Aktivität aktualisiert, ist aber trotzdem vorhanden, um das Ansichtsmodell des Modells zu benachrichtigen Daten wurden aktualisiert und die Ansicht in Echtzeit aktualisiert?Aktualisierung der Recycler-Ansicht mit Echtzeitdaten

Ich habe versucht, die BaseObservable-Schnittstelle und ObservableFields zu implementieren, aber ich bekomme immer noch das gleiche Ergebnis.

Möglicherweise einige RxJava Techniken, die ich verwenden könnte, obwohl ich mit RxJava so irgendwelche Hinweise auf die Beispiele nicht vertraut bin ein ähnliches Problem zu lösen wäre hilfreich

Dank

+0

siehe [paging] (https://developer.android.com/topic/libraries/architecture/paging.html) Bibliothek, achten Sie auf 'LivePagedListProvider',' PagedListAdapter' und 'DataSource' (' TiledDataSource'/'KeyedDataSource') – pskink

+0

@pskink danke für den Vorschlag, Problem ist, dass die Paging-Bibliothek ist Teil der neuen Architektur Komponenten-Bibliothek, und ich möchte das nicht in meiner App noch verwenden, wie es immer noch in der Alpha-Phase – d199224

+0

Tough Job zu implementieren yo selbst, überprüfen Sie dies: https://mag.n26.com/reactive-clean-architecture-with-android-architecture-components-685a6682e0ca –

Antwort

0

die Ansicht zu erhalten, um auf Ansichtsmodell ändern Sie, aktualisieren basierend Rufen Sie einfach notifyChange (wenn Sie BaseObservable implementiert haben) oder notifyPropertyChange. Um das ViewModel wissen zu lassen, dass das Modell aktualisiert wurde, können Sie RxJava verwenden oder Ihre eigene onModelChanged-Schnittstelle implementieren.

Wenn Sie einen Contentprovider (und CursorLoader, zum Beispiel) verwenden, kann contentProviders auch anrufen getContext().getContentResolver().notifyChange(uri, null) zu benachrichtigen, dass das Modell geändert hat (was in onLoadFinished() wird erneut aufgerufen, in dem Ansichtsmodell führen soll.

Verwandte Themen