リスト 変更
このシード処理されたインターフェースでは、 RealmListコレクションに発生する可能性のある変更について説明します。
状態は、 InitialList 、 UpdatedList 、 DeletedListの特定のサブクラスによって表されます。 リストが削除されると、 null
の代わりに空のリストが生成されます。
したがって、変更はさまざまな方法で消費されます。
// Variant 1: Switch on the sealed interface
person.addresses.asFlow()
.collect { listChange: ListChange<Address> ->
when(listChange) {
is InitialList -> setAddressesUIList(listChange.list)
is UpdatedList -> updateAddressesUIList(listChange) // Android RecyclerView knows how to animate ranges
is DeletedList -> deleteAddressesUIList()
}
}
// Variant 2: Just pass on the list
person.addresses.asFlow()
.collect { listChange: ListChange<Address> ->
handleChange(listChange.list)
}
クリップボードにコピーされた内容
リストが更新されると、以前のバージョンからの変更を説明する追加情報が提供されます。 この情報は、 RecyclerView
のような UI コンポーネントでアニメーションを実行するために直接フィードできる方法で形式されます。 この情報にアクセスするには、 Listchangeを適切なサブクラスにキャストする必要があります。
person.addresses.asFlow()
.collect { listChange: ListChange<Address> ->
when(listChange) {
is InitialList -> setList(listChange.list)
is UpdatedList -> { // Automatic cast to UpdatedList
updateList(
listChange.list,
listChange.deletionRanges,
listChange.insertionRanges,
listChange.changeRanges
)
}
is DeletedList -> deleteList()
}
}
クリップボードにコピーされた内容