Tutorial Android #24 – Widgets (II)

Olá pessoal! Como estão?

No último post, vimos como criar um widget simples com o nome do restaurante. Hoje, vamos incrementá-lo em dois pontos principais: (1) ele terá um botão que mudará o restaurante que é exibido, mostrando outro aleatoriamente e; (2) ao tocar sobre o nome do restaurante no widget, é aberto o formulário para que você possa ver as outras informações sobre aquele restaurante.

Então, mãos à massa!

O primeiro passo é adicionarmos o botão ao layout de nosso widget. Dessa forma, abra o arquivo widget.xml que está em res/layout e faça a adição da imagem do botão, do tipo ImageButton:

Os atributos, no ponto em que estamos, não devem ser nenhuma surpresa. Neste ponto, já deve ser possível vê-lo no layout ao recompilar a aplicação.

O arquivo de imagem do ícone pode ser baixado junto com o projeto no final deste post.

No post anterior, toda a nossa lógica de consulta ao banco estava dentro do método onUpdate() do nosso widget. Isso funciona bem, mas, caso a lógica se expanda muito, corremos o risco da atualização demorar mais que o esperado e comprometer o desempenho da aplicação, já que o método é chamado em nossa thread principal.

Para melhorar isso, vamos novamente fazer uso de um IntentService que nos possibilita a realizar a consulta de modo assíncrono, sem comprometer o sistema. Portanto, crie uma classe chamada WidgetService e coloque-a no pacote net.rafaeltoledo.restaurante. Esta classe, que estenderá IntentService abrigará a lógica que estávamos executando no widget.

Basicamente o que fizemos foi passar a lógica para o nosso WidgetService. O próximo passo é adicionar esse nosso serviço lá no arquivo AndroidManifest.xml para que ele possa funcionar. Assim, adicione ao fim do nó application a seguinte linha:

Agora, vamos atualizar a classe WidgetAplicativo para que faça uso do nosso serviço.

Pronto. A parte mais “complicada” está feita. Agora precisamos apenas gerenciar os toques no botão e no nome do restaurante. Primeiramente, vamos fazer com que um novo restaurante seja exibido caso seja acionado o botão. Para esse processo, utilizaremos um PendingIntent para acionar a nossa Intent quando o “clique” for realizado.

Para isso, adicione as seguintes linhas ao final do método onHandleEvent() da classe WidgetService:

Com isso, toda vez que o botão for acionado, o nosso serviço de carregamento será executado novamente.

Por fim, precisamos agora gerenciar para que, ao tocar sobre o nome do restaurante, seja aberta a tela com o formulário. Para isso, precisaremos de realizar algumas mudanças sutis no método onHandleIntent(). As principais são que, além do nome, precisaremos também do identificador, pois através dele iremos carregar os dados no formulário. Além disso, também utilizaremos um PendingIntent para acionar a exibição do formulário.

E… prontinho! É isso. Como sempre, para baixar o código do aplicativo, só clicar aqui.

O próximo tutorial de Android muito provavelmente será o último. Não porque eu ache que não há mais o que ser tratado, mas porque a ideia dos tutoriais era mostrar uma visão geral, com alguns conceitos básicos. 25 tutoriais é um bom número. E isso também me permitirá abordar outros assuntos. (estou com ideia de pelo menos mais 6 séries de tutoriais!)

Então… aguardem pelo gran finale Android! Até lá! 🙂

4 comentários sobre “Tutorial Android #24 – Widgets (II)

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

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.