O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Observable Binding Para Atualização na UI Android

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 30 Anúncio

Observable Binding Para Atualização na UI Android

Baixar para ler offline

➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/observable-binding-para-atualizacao-na-ui-android

Neste conjunto de slides vamos ao estudo dos tipos observáveis da biblioteca Data Binding. Você notará a facilidade de atualização dos elementos em tela quando utilizando esses tipos.

➙ Para receber o conteúdo do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br

Abraço.


▶ Treinamento oficial:

➙ Prototipagem Profissional de Aplicativos Android: 
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/?couponCode=OBSERVABLE_BINDING&persist_locale&locale=pt_BR


▶ Livros oficiais: 

➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia: 
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android

➙ Receitas Para Desenvolvedores Android: 
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android 

➙ Refatorando Para Programas Limpos: 
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos 


▶ Redes: 

➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita 
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/ 
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops 
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita 


▶ Blog App: 

➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR

➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/observable-binding-para-atualizacao-na-ui-android

Neste conjunto de slides vamos ao estudo dos tipos observáveis da biblioteca Data Binding. Você notará a facilidade de atualização dos elementos em tela quando utilizando esses tipos.

➙ Para receber o conteúdo do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br

Abraço.


▶ Treinamento oficial:

➙ Prototipagem Profissional de Aplicativos Android: 
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/?couponCode=OBSERVABLE_BINDING&persist_locale&locale=pt_BR


▶ Livros oficiais: 

➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia: 
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android

➙ Receitas Para Desenvolvedores Android: 
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android 

➙ Refatorando Para Programas Limpos: 
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos 


▶ Redes: 

➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita 
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/ 
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops 
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita 


▶ Blog App: 

➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR

Anúncio
Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a Observable Binding Para Atualização na UI Android (20)

Anúncio

Mais recentes (20)

Anúncio

Observable Binding Para Atualização na UI Android

  1. 1. Observable Binding Para Atualização na UI Android thiengo.com.br
  2. 2. Para que os tipos observáveis de Data Binding? Quando trabalhando em projeto Android quase sempre temos de ter o trecho de código responsável por atualizar as visualizações em tela, isso, pois os objetos com os dados referenciados nas visualizações já foram atualizados e essa atualização precisa ser refletida ao usuário do aplicativo. Com os tipos observáveis da biblioteca Data Binding nós, desenvolvedores, não mais precisamos nos preocupar com essa parte do fluxo: invocações de métodos e visualizações para refletir a atualização de objetos também em tela. Há três categorias de classes observáveis dentro da Data Binding API: • Observáveis de campo (propriedade); • Observáveis de coleções; • Observáveis de objetos. Já lhe adianto que os observáveis de campo quase sempre serão os utilizados em desenvolvimento. Com isso podemos partir para os códigos de exemplo.
  3. 3. Instalação da biblioteca No Kotlin a configuração de instalação da biblioteca Data Binding exige as seguintes referências no Gradle App Level, ou build.gradle (Module: app): Até o momento da construção deste conjunto de slides a versão estável mais atual da com.android.databinding era a 3.1.4.
  4. 4. A versão da biblioteca é a mesma versão do plugin do Gradle, logo, no Gradle Project Level, ou build.gradle (Project: NomeApp), podemos ter: E então no Gradle App Level teríamos a atualização da referência 'com.android.databinding:compiler':
  5. 5. Saiba que se você estivesse utilizando a linguagem Java somente o código a seguir, no Gradle App Level, é que seria necessário para liberar o trabalho com a Data Binding API:
  6. 6. Classes de domínio e layout ainda sem tipos observáveis A seguir alguns protótipos de classes e layout ainda sem uso dos tipos observáveis, mas já trabalhando a sintaxe Data Binding. Primeiro a classe Brand: Então a classe Car:
  7. 7. Então o layout car.xml: Todos os códigos apresentados funcionam sem problemas, mas em caso de alguma das propriedades tanto de Brand quanto de Car ser atualizada, ainda é preciso acessar a View a qual o propriedade está vinculada e então colocar o novo valor nela para termos o reflexo da atualização também em tela.
  8. 8. Tipos observáveis de campo Os tipos observáveis de campo são os seguintes: • ObservableBoolean; • ObservableByte; • ObservableChar; • ObservableShort; • ObservableInt; • ObservableLong; • ObservableFloat; • ObservableDouble; • ObservableParcelable; • ObservableField. O termo "observáveis de campo" até mesmo aparenta que estaremos com um código listener para dados de entrada do usuário, em um EditText, por exemplo. Mas na verdade não, o "campo" é de propriedade, ou variável de instância.
  9. 9. Colocando tipos observáveis de campo no código de exemplo Para que as atualizações em objetos dos tipos Brand e Car sejam refletidas também em tela sem a necessidade de códigos de acesso a Views por parte do desenvolvedor poderíamos primeiro ter a seguinte nova classe Brand: E então a seguinte nova classe Car: A documentação de tipos observáveis Data Binding informa para sempre definirmos esses tipos como somente de leitura, val. Poderemos utilizar o método set() para atualizar o valor dentro do tipo observável. Se um novo objeto observável for setado na propriedade, a igualdade de referência em layout será perdida e assim a atualização não ocorrerá em tela, pois a propriedade em código dinâmico e a referência em layout não mais apontam para o mesmo objeto observável.
  10. 10. Agora um pequeno algoritmo de atualização de dados em objetos, somente para teste de atualização também em tela:
  11. 11. Note que quando trabalhando em código dinâmico, para acessar os valores dos tipos observáveis temos de utilizar os métodos get() e set(), respectivamente para acesso e atualização de valores. No layout XML tudo continua do mesmo jeito, não há necessidade de invocar nem mesmo o método get(). Executando o projeto com os novos códigos observáveis, temos: Clique aqui para ativar a animação.
  12. 12. Coleções observáveis: ObservableArrayMap Há dois tipos de coleções observáveis, vamos iniciar com a ObservableArrayMap. A seguir um código trabalhando com uma coleção de objetos do tipo Car:
  13. 13. Então o layout car.xml atualizado:
  14. 14. No layout anterior é possível notar que há diferentes modos de acesso aos dados, podemos trabalhar com o modelo convencional, map["chave_de_acesso_ao_valor"], ou no modelo também aceito pela sintaxe Data Binding, map.chave_de_acesso_ao_valor. Também note a representação de ObservableArrayMap<String, Car> em sintaxe Data Binding: ObservableArrayMap&lt;String, Car&gt;. Isso, pois os sinais > e < não são aceitos como valores na sintaxe desta biblioteca. Executando o projeto com o código anterior, temos: Clique aqui para ativar a animação.
  15. 15. Coleções observáveis: ObservableArrayList O outro tipo de coleção observável é o ObservableArrayList, um tipo mais próximo do que poderíamos utilizar, por exemplo, junto a um adaptador de framework de lista, framework como o RecyclerView. A seguir um código com um objeto ObservableArrayList sendo utilizado para conter um objeto Car:
  16. 16. Assim o layout car.xml atualizado:
  17. 17. Com ObservableArrayList podemos acessar os valores por meio do método get() ou utilizando []. Você não precisa utilizar números ou valores de chave diretamente em código XML como fizemos no exemplo anterior e no exemplo com ObservableArrayMap. Você pode colocar as chaves como valores estáticos de uma classe e então acessar essas chaves com os rótulos definidos em classe, assim o código fica até mais simples de entender. Executando o projeto com o novo código, temos: Clique aqui para ativar a animação.
  18. 18. Objeto observável A outra maneira de se trabalhar com um tipo observável é herdando da classe BaseObservable e então implementando as propriedades observáveis da maneira correta. A seguir a atualização da classe Car:
  19. 19. Note a necessidade de marcar a entidade observável com a anotação @get:Bindable. Depois, seguindo a sintaxe Kotlin, temos de sobrescrever o método set() de cada propriedade que terá a característica de ser observável. Logo, aqui os campos têm de ser mutáveis, var. field representa a propriedade do método set(), regra de sintaxe do Kotlin. A classe BR é criada pela própria biblioteca Data Binding para conter a propriedade que deverá ser notificada quando houver um novo valor para ela. Pode ser necessário um "Build" e "Rebuild Project" para que a classe BR surja já com as propriedades corretas. O método notifyPropertyChanged() dispensa comentários, faz exatamente o que o rótulo dele indica: notifica uma mudança em propriedade. Note que com este modelo de tipo observável, apesar de termos de colocar mais códigos, nós temos maior controle sobre quando notificar uma mudança. Seguramente poderíamos colocar o método notifyPropertyChanged() dentro de condicionais de avaliação para definir quando ele deve ou não ser invocado. Uma última observação. A propriedade brand não precisa ter nenhum tipo observável nela. Aqui vamos aproveitar a classe Brand já atualizada e então prosseguir assim. O trabalho com o bloco init{} também não é obrigatório, aqui o fiz para manter a igualdade de inicialização de objeto Car por meio do construtor, como fizemos nos outros slides.
  20. 20. Com isso podemos partir para um código de exemplo com a nossa nova versão de Car:
  21. 21. Então o layout car.xml atualizado:
  22. 22. Executando o projeto com os novos códigos, temos: Clique aqui para ativar a animação.
  23. 23. Tipos observáveis em adaptadores de listas É importante falar também dos tipos observáveis em adaptadores de lista, pois a principio o que pensamos é que as coleções observáveis nos permitem a fácil inclusão / remoção de itens e atualização de qualquer um deles. Na verdade a atualização de qualquer um dos itens já em lista realmente vai ser refletida também em tela, assumindo que os objetos em lista têm suas propriedades observáveis. Mas mesmo quando trabalhando com uma coleção observável, adicionar ou remover um item não tem efeito algum em tela. Para que a adição (ou remoção) de um item tenha efeito visual, ainda é preciso também invocar algum dos métodos de notificação de atualização de lista: notifyDataSetChanged() ou notifyItemChanged(). Ou seja, ao menos para frameworks de lista, para termos efeito visual na adição, remoção ou atualização de posição de item, os códigos permanecem os mesmos quando não utilizando tipos observáveis.
  24. 24. Veja o hackcode a seguir:
  25. 25. Pontos negativos • Os tipos de coleções observáveis têm o exato mesmo efeito em classe adaptadora que qualquer outro tipo de coleção mutável. O processo de adição, remoção e atualização de posição de item ainda exige a invocação de algum método de notificação da classe adaptadora; • A documentação não oferece exemplos implementando a Interface Observable.
  26. 26. Ponto positivo • Permite que nós desenvolvedores Android não mais tenhamos de se preocupar também com os códigos de atualização de dados em tela.
  27. 27. Conclusão Que a biblioteca Data Binding é importante você certamente já deve estar ciente, principalmente em contexto de mercado de trabalho. Os tipos observáveis desta biblioteca nos dão ainda mais arsenal de programação, também por remover de nosso tempo de desenvolvimento a necessidade de criar códigos de atualização de dados em tela. Mas há um custo para isso: trabalhar os tipos da API ou implementar a classe BaseObservable, está última que exige ainda mais linhas de código e conhecimento Kotlin.
  28. 28. Fontes Conteúdo completo, em texto e em vídeo, no link a seguir: • Observable Binding Para Atualização na UI Android. Fontes: • Work with observable data objects; • Documentação oficial ObservableParcelable; • ObservableParcelable<String> is not working - Resposta de Виталий Махнев.
  29. 29. Para estudo • Treinamento oficial: • Prototipagem Profissional de Aplicativos Android. • Meus livros: • Receitas Para Desenvolvedores Android; • Refatorando Para Programas Limpos. • Redes: • Udemy; • YouTube; • Facebook; • LinkedIn; • GitHub; • Twitter; • Google Plus. • Blog App.
  30. 30. Observable Binding Para Atualização na UI Android thiengo.com.br Vinícius Thiengo thiengocalopsita@gmail.com

×