Resultados Mudar
Essa interface selada descreve as possíveis alterações que podem acontecer a uma query de resultados de collection.
Os estados são representados pelas subclasses específicas InitialResults e UpdatedResults.
As mudanças podem ser consumidas de várias maneiras:
// 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)
}
Conteúdo copiado para a área de transferência
Quando os resultados da query mudam, informações adicionais são fornecidas descrevendo as alterações da versão anterior. Essas informações são formatadas de uma forma que podem ser alimentadas diretamente para direcionar programações em componentes da interface do usuário como RecyclerView
. Para acessar essas informações, o ResultsChange deve ser convertido na subclasse apropriada.
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
)
}
}
}
Conteúdo copiado para a área de transferência