名单更改

接口 ListChange<t>

这个密封接口描述了RealmListcollection可能发生的更改。

这些状态由特定的子类InitialListUpdatedListDeletedList 表示。 删除列表时,会发出一个空列表,而不是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等用户界面组件上的动画。 为了访问此信息,必须将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()
}
}

继承者

属性

链接已复制到剪贴板
摘要 val 名单: RealmList<t>