Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida no Ex. 2 da Aula 5 - Persistência com SQLite

Bom pessoal tenho uma dúvida a levantar, achei algo bem repetitivo e estranho nesse último exemplo passado no vídeo, qual a real razão de pegar meu objeto do meu XML para passar ele para seu determinado objeto, arrancar uma única propriedade dele para colocar em uma String, int, double, etc, para depois inserir esse objeto dentro dos atributos do meu objeto Aluno.

Costumo realizar o seguinte procedimento.

aluno.setNota (((RatingBar) findViewById(R.id.nota)).getRating());

Não sei se este seria o processo ideal a se fazer, mas por exemplo evita a criação de 2 variáveis que são utilizadas apenas para adquirir uma única informação.

1 resposta
solução!

Olá Hermivaldo!

O procedimento que você descreveu realmente funciona sem problemas mas costumamos evitá-los por alguns motivos.

O método findViewById() é bastante custoso para o Android. Toda vez que o invocamos, temos que percorrer toda a árvore de componentes (Views) que compõem a nossa tela para encontrarmos o elemento que possui o id especificado. Para layouts mais complexos, procuramos fazer todos os findViewById() uma única vez no onCreate() da Activity justamente para evitar fazê-los toda vez que precisamos de dados de algum componente.

A segunda razão pela qual evitamos esse tipo de código é porque ele se torna menos legível. A primeira coisa que salta ao olhos é quantidade de parênteses nessa linha. Fica difícil saber o que é paramêtro, onde começa e termina a invocação de cada método. Por exemplo, veja o código equivalente:

RatingBar ratingBar = (RatingBar) findViewById(R.id.nota);
double valor = ratingBar.getRating();
aluno.setNota(valor);

Se imaginarmos uma pessoa que nunca programou para Android, com certeza ela vai ter mais facilidade para entender o código dessa forma.

Abraço!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software