Atualizando listas – Xamarin Forms

 

Olá! Tudo bem? Recentemente, no projeto que estou atuando, me deparei com uma dificuldade: atualizar a UI ao alterar um objeto da minha lista.
Meu objetivo hoje é compartilhar com vocês como resolvi este problema, ou melhor,
entender de uma forma mais clara como o Xamarin Forms trabalha com listagens.

Problema

Dado a seguinte classe utilizada como modelo:


Dado a seguinte ViewModel:

E por fim, minha lista:

Inicialmente era essa a estrutura que eu possuía. A partir de um clique era feito uma chamada ao método UpdateItem e a propriedade Name do item era alterada, entretanto, a minha UI não refletia essa alteração. Mesmo a minha listagem sendo uma ObservableCollection, a UI só era alterada quando eu adicionava ou removia algum item da lista. Nada acontecia quando eu alterava somente uma propriedade de um objeto dessa lista.

Resolução

Uma ObservableCollection monitora alterações na coleção, ou seja, adição e remoção de itens. Nestes cenários a atualização da UI acontecerá sem problemas.
Para resolver a questão de alteração de um objeto da lista, preciso definir que essas propriedades devem notificar a UI.
Modelo atualizado:
Veja, as propriedades devem notificar a alteração para que a UI atualize. Como estou utilizando Prism, fiz meu modelo herdar da classe BindableBase e utilizei o método SetProperty, caso você não esteja utilizando Prism basta utilizar o método NotifyPropertyChanged.

 Conclusão

Para a UI ser notificada quando um item de uma lista é alterado, as propriedades do meu modelo devem implementar o NotifyPropertyChanged.
Quando uma coleção é alterada, um item removido ou um item novo inserido, basta a listagem ser uma ObservableColletion. ObservableCollections não identificam alterações dos itens do objeto da listagem.
Talvez esse comportamento seja óbvio para as pessoas que possuem mais experiência com XF, mas talvez para outras não seja tão óbvio, como foi no meu caso.
Obrigado pela leitura!

 

Anúncios

Um comentário sobre “Atualizando listas – Xamarin Forms

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s