结果更改

这个密封接口描述了查询结果集合可能发生的更改。

这些状态由特定子类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等用户界面组件上的动画。 为了访问此信息,必须将ResultsChange转换为适当的子类。

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
)
}
}
}

继承者

属性

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