結果変更

インターフェース 結果の変更<t : baseRealmObject>

このシード処理されたインターフェースは、クエリ結果のコレクションに発生する可能性のある変更を記述します。

状態は、特定のサブクラス、 InitialResultsUpdatedResultsによって表されます。

したがって、変更はさまざまな方法で消費されます。

// Variant 1: Switch on the sealed interface
realm.query<Person>().asFlow()
.collect { resultsChange: ResultsChange<Person> ->
when(resultsChange) {
is InitialResults -> setUIResults(resultsChange.list)
is UpdatedResults -> updateUIResults(resultsChange) // Android RecyclerView knows how to animate ranges
}
}


// Variant 2: Just pass on the list
realm.query<Person>().asFlow()
.collect { resultsChange: ResultsChange<Person> ->
handleChange(resultsChange.list)
}

クエリ結果が変更された場合、以前のバージョンからの変更を説明する追加情報が提供されます。 この情報は、 RecyclerViewのような UI コンポーネントでアニメーションを実行するために直接フィードできる方法で形式されます。 この情報にアクセスするには、結果変更を適切なサブクラスにキャストする必要があります。

realm.query<Person>().asFlow()
.collect { resultsChange: ResultsChange<Person> ->
when(resultsChange) {
is InitialResults -> setList(resultsChange.list)
is UpdatedResults -> { // Automatic cast to UpdatedResults
updateResults(
resultsChange.list,
resultsChange.deletionRanges,
resultsChange.insertionRanges,
resultsChange.changeRanges
)
}
}
}

継承

プロパティ

クリップボードにコピーされたリンク
抽象 価値 list: RealmResults<t>