SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
Desenvolvimento de
Apps e Games para Android




Por Erisvaldo Júnior.   Parte 6 (29/09/2011)
RECAPITULANDO…
BackupManager

     Android desde a API Level 8 permite armazenar dados na Cloud
     sem necessidade de banco de dados externo (perfeito para
     armazenar       SharedPreferences     ou     arquivos     de
     configuração/informação simples).


               Como fazer isso com SharedPreferences?
                     Primeiro passo: criar uma chave de acesso em
                 http://code.google.com/android/backup/signup.html
• Depois deve-se criar uma classe que herda de BackupAgentHelper e, no onCreate(), criar
  uma instância de SharedPreferencesBackupHelper;
• No AndroidManifest.xml deve-se colocar os atributos android:allowBackups=“true” e
  android:backupAgent=“NomeDaSuaClasseQueHerdaDeBackupAgentHelper” em
  <application> e, por fim, adicionar a seguinte tag dentro de <application>:
BackupManager

Cada vez que você alterar um dado do grupo de
SharedPreferences, você deve invocar o método dataChanged() da
classe BackupManager.



                            E agora?
      Está feito! Suas SharedPreferences serão armazenadas na nuvem,
       fazendo com que o usuário não perca a informação mesmo após
                           reinstalar o seu aplicativo.
Exemplo de BackupManager & SharedPreferences
Banco de Dados SQLite

Android provê suporte completo a bancos de dados SQLite. Os
bancos criados serão acessíveis pelo nome para qualquer classe da
aplicação, mas não poderão ser acessados externamente.

 Para se criar um banco de dados, pode-se usar o método
 openOrCreateDatabase() do contexto. Contudo, a forma
 recomendada é criar uma subclasse de SQLiteOpenHelper e
 sobrescrever o método onCreate() para a criação das tabelas.
SQLiteOpenHelper

O construtor de SQLiteOpenHelper recebe quatro        parâmetros,
conforme especificado abaixo. A versão do banco       de dados é
muito útil para o caso de o banco já existir e        precisar ser
atualizado (através da adição de novas tabelas e/ou   colunas, por
exemplo).
SQLiteDatabase - query()

As consultas com query() retornam um Cursor para navegação e
recebem diversos parâmetros, cada qual com sua utilidade para a
consulta, conforme explicitado abaixo.
Exemplo de Banco de Dados SQLite
Roteiro da Aula



COMUNICAÇÃO         LISTVIEW E
                   LISTACTIVITY




                        Bem vindo ao mundo da mobilidade
COMUNICAÇÃO
Network Connection

Há, ainda, uma quinta forma de persistência em Android: o
armazenamento remoto. Pode-se usar uma rede (quando
disponível) para armazenar e recuperar dados de seus serviços
baseados na Web.




 Para realizar operações na rede, usam-se classes dos seguintes
 pacotes:

 • java.net;
 • android.net.
Android Networking Capabilities
org.apache.http.client.methods.HttpGet
org.apache.http.client.methods.HttpPost
URLConnection

java.net.URL url = new java.net.URL(“http://developer.android.com");
java.net.URLConnection uc = url.openConnection();
BufferedReader br = new BufferedReader( new InputStreamReader (
uc.getInputStream() ) );

   Faça uma aplicação
   que exiba o código-
   fonte de uma página
   qualquer        cujo
   endereço é digitado
   em um EditText.

   OBS: Lembre-se de
   definir permissão de
   acesso à Internet no
   AndroidManifest.xml
URLConnection

Faça uma aplicação que acesse exemploget.php e mostre o
                retorno em um TextView.

                        Exemplo:
   http://erisvaldojunior.com/exemploget.php?tipo=2

             tipo=1      Retorno: Bom dia
             tipo=2     Retorno: Boa tarde
             tipo=3     Retorno: Boa noite
                Default     Retorno: Oi
LISTVIEW E LISTACTIVITY
ListView

   Provê uma lista de itens (com scrolling) provenientes de um
   Array/Lista ou de um banco de dados.
   ListView é abastecido através de um adaptador. Pode-se fazer seu
   próprio adaptador para determinar como os dados são lidos.


                 ArrayAdapter e CursorAdapter

• ArrayAdapter – trata dados baseados em Array ou
  Lists;

• SimpleCursorAdapter – trata dados provenientes de
  um banco de dados SQLite.
ListActivity

   Classe base para uma Activity cujo objetivo é mostrar uma lista.
   Provê facilidades como um método predefinido para quando um
   usuário seleciona um elemento da lista.
   Contém um adaptador que deve ser setado no próprio metodo
   onCreate() da ListActivity. Isso é feito através do setListAdapter().

 onListItemClick() – método de ListActivity chamado quando
               um item da lista é selecionado.
• Layouts Default – os itens da lista podem ter um layout
  padrão. Ex: android.R.layout.simple_list_item1;

• Layouts Personalizados – seu layout (XML) deve conter uma
  ListView com o ID @android:id/list. Além disso, você pode
  ter um TextView @android:id/empty indicando lista vazia.
Exemplo 1
Criar uma lista de elementos com ListActivity + Array Adapter +
Layout Default.
Exemplo 2
   Criar uma lista de elementos com ListActivity + Array Adapter +
   Layout PERSONALIZADO.



• Modificar o código anterior para
  o ArrayAdapter utilizar o layout
  abaixo, apontando para o
  R.id.label.
              rowlayout.xml
ListActivity com layout dinâmico

   Nos exemplos anteriores, o layout é o mesmo para todos os itens.
   É possível mudar a aparência de itens específicos de uma ListView
   criando o seu próprio adaptador, através do método getView() e
   da classe LayoutInflater.


       MySimpleArrayAdapter extends ArrayAdapter

• getView(int position, View convertView,
  ViewGroup parent) – método que deve ser
  sobrecarregado para personalizar a aparência do
  item da lista.
Exemplo 3:
Personalizar ícone de itens específicos da lista.
Exemplo 3:
Depois, basta setar o adaptador criado no método onCreate() da
ListActivity.
ListView, ListActivity e Adapters
              Há muitas outras possibilidades!

• setOnItemLongClickViewListener() de ListView – apresenta
  o método onItemLongClick(), invocado quando o usuário
  mantém o dedo pressionado sobre um item;

• Seleção Múltipla;

• Cabeçalho e rodapé;

• SimpleCursorAdapter
   • ContentProvider – exemplo: mostrar lista de contatos;
   • Banco de dados próprio (SQLite).
obrigado
• e-mail: erisvaldo@yupistudios.com.br
• web: http://erisvaldojunior.com
• twitter: @erisvaldojunior

Contenu connexe

En vedette

Desenvolvimento de Apps e Games para iOS - Parte 1
Desenvolvimento de Apps e Games para iOS - Parte 1Desenvolvimento de Apps e Games para iOS - Parte 1
Desenvolvimento de Apps e Games para iOS - Parte 1Erisvaldo Junior
 
Desenvolvimento de Apps e Games para Android - Parte 7
Desenvolvimento de Apps e Games para Android - Parte 7Desenvolvimento de Apps e Games para Android - Parte 7
Desenvolvimento de Apps e Games para Android - Parte 7Erisvaldo Junior
 
Plataformas Para Desenvolvimento Em Celulares
Plataformas Para Desenvolvimento Em CelularesPlataformas Para Desenvolvimento Em Celulares
Plataformas Para Desenvolvimento Em CelularesAndré Otero
 
Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2Erisvaldo Junior
 
Baixando, instalando e testando o android sdk
Baixando, instalando e testando o android sdkBaixando, instalando e testando o android sdk
Baixando, instalando e testando o android sdkReuel Lopes
 

En vedette (7)

A Era da Mobilidade
A Era da MobilidadeA Era da Mobilidade
A Era da Mobilidade
 
Desenvolvimento de Apps e Games para iOS - Parte 1
Desenvolvimento de Apps e Games para iOS - Parte 1Desenvolvimento de Apps e Games para iOS - Parte 1
Desenvolvimento de Apps e Games para iOS - Parte 1
 
Desenvolvimento de Apps e Games para Android - Parte 7
Desenvolvimento de Apps e Games para Android - Parte 7Desenvolvimento de Apps e Games para Android - Parte 7
Desenvolvimento de Apps e Games para Android - Parte 7
 
Plataformas Para Desenvolvimento Em Celulares
Plataformas Para Desenvolvimento Em CelularesPlataformas Para Desenvolvimento Em Celulares
Plataformas Para Desenvolvimento Em Celulares
 
Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2
 
Nokia SDK for Java
Nokia SDK for JavaNokia SDK for Java
Nokia SDK for Java
 
Baixando, instalando e testando o android sdk
Baixando, instalando e testando o android sdkBaixando, instalando e testando o android sdk
Baixando, instalando e testando o android sdk
 

Similaire à Desenvolvimento de Apps e Games para Android - Parte 6

hibernate annotation
hibernate annotationhibernate annotation
hibernate annotationeduardo dias
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1Thyago Maia
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Carlos Duarte do Nascimento
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineCampus Party Brasil
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java IIIVerônica Veiga
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsEduardo Mendes
 
PDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETPDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETslides_teltools
 
05 - Acesso e Manipulação de Dados através de Classes do ADO.NET
05 - Acesso e Manipulação de Dados através de Classes do ADO.NET05 - Acesso e Manipulação de Dados através de Classes do ADO.NET
05 - Acesso e Manipulação de Dados através de Classes do ADO.NETfilipe-lemos
 
Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Ryan Padilha
 
Programação para Web II: JavaServer Pages
Programação para Web II:  JavaServer PagesProgramação para Web II:  JavaServer Pages
Programação para Web II: JavaServer PagesAlex Camargo
 
Como criar um plugin para WordPress
Como criar um plugin para WordPressComo criar um plugin para WordPress
Como criar um plugin para WordPressLeandrinho Vieira
 

Similaire à Desenvolvimento de Apps e Games para Android - Parte 6 (20)

Java13
Java13Java13
Java13
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
 
Aula 12/06 (SQLite)
Aula 12/06 (SQLite)Aula 12/06 (SQLite)
Aula 12/06 (SQLite)
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
 
Modulos SNEP
Modulos SNEPModulos SNEP
Modulos SNEP
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java III
 
Apache Struts
Apache StrutsApache Struts
Apache Struts
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
ApresentaçãO Mvc
ApresentaçãO MvcApresentaçãO Mvc
ApresentaçãO Mvc
 
Apresentação M V C
Apresentação M V CApresentação M V C
Apresentação M V C
 
PDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETPDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NET
 
Ado.net.exmplos.praticos
Ado.net.exmplos.praticosAdo.net.exmplos.praticos
Ado.net.exmplos.praticos
 
React js
React js React js
React js
 
05 - Acesso e Manipulação de Dados através de Classes do ADO.NET
05 - Acesso e Manipulação de Dados através de Classes do ADO.NET05 - Acesso e Manipulação de Dados através de Classes do ADO.NET
05 - Acesso e Manipulação de Dados através de Classes do ADO.NET
 
Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)
 
Programação para Web II: JavaServer Pages
Programação para Web II:  JavaServer PagesProgramação para Web II:  JavaServer Pages
Programação para Web II: JavaServer Pages
 
Como criar um plugin para WordPress
Como criar um plugin para WordPressComo criar um plugin para WordPress
Como criar um plugin para WordPress
 

Plus de Erisvaldo Junior

Desenvolvimento de Apps e Games para Android - Parte 3
Desenvolvimento de Apps e Games para Android - Parte 3Desenvolvimento de Apps e Games para Android - Parte 3
Desenvolvimento de Apps e Games para Android - Parte 3Erisvaldo Junior
 
Desenvolvimento de Apps e Games para Android - Parte 2
Desenvolvimento de Apps e Games para Android - Parte 2Desenvolvimento de Apps e Games para Android - Parte 2
Desenvolvimento de Apps e Games para Android - Parte 2Erisvaldo Junior
 
Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1Erisvaldo Junior
 
Java me record management system
Java me   record management systemJava me   record management system
Java me record management systemErisvaldo Junior
 
Java me material complementar
Java me   material complementarJava me   material complementar
Java me material complementarErisvaldo Junior
 
Java me material complementar
Java me   material complementarJava me   material complementar
Java me material complementarErisvaldo Junior
 
Java me record management system
Java me   record management systemJava me   record management system
Java me record management systemErisvaldo Junior
 
Java me generic connection framework
Java me   generic connection frameworkJava me   generic connection framework
Java me generic connection frameworkErisvaldo Junior
 
Introdução a api de baixo nível do java me
Introdução a api de baixo nível do java meIntrodução a api de baixo nível do java me
Introdução a api de baixo nível do java meErisvaldo Junior
 
Introdução a game api do java me
Introdução a game api do java meIntrodução a game api do java me
Introdução a game api do java meErisvaldo Junior
 
Ginga-J Emulator: uma Ferramenta de Execução de Aplicações Imperativas para o...
Ginga-J Emulator: uma Ferramenta de Execução de Aplicações Imperativas para o...Ginga-J Emulator: uma Ferramenta de Execução de Aplicações Imperativas para o...
Ginga-J Emulator: uma Ferramenta de Execução de Aplicações Imperativas para o...Erisvaldo Junior
 
Desenvolvendo para iOS em linux
Desenvolvendo para iOS em linuxDesenvolvendo para iOS em linux
Desenvolvendo para iOS em linuxErisvaldo Junior
 
Arquitetura de apis gráficas do java dtv - lwuit e dtv-ui
Arquitetura de apis gráficas do java dtv - lwuit e dtv-uiArquitetura de apis gráficas do java dtv - lwuit e dtv-ui
Arquitetura de apis gráficas do java dtv - lwuit e dtv-uiErisvaldo Junior
 

Plus de Erisvaldo Junior (20)

Desenvolvimento de Apps e Games para Android - Parte 3
Desenvolvimento de Apps e Games para Android - Parte 3Desenvolvimento de Apps e Games para Android - Parte 3
Desenvolvimento de Apps e Games para Android - Parte 3
 
Desenvolvimento de Apps e Games para Android - Parte 2
Desenvolvimento de Apps e Games para Android - Parte 2Desenvolvimento de Apps e Games para Android - Parte 2
Desenvolvimento de Apps e Games para Android - Parte 2
 
Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1
 
Java me record management system
Java me   record management systemJava me   record management system
Java me record management system
 
Java me material complementar
Java me   material complementarJava me   material complementar
Java me material complementar
 
Java me material complementar
Java me   material complementarJava me   material complementar
Java me material complementar
 
Java me record management system
Java me   record management systemJava me   record management system
Java me record management system
 
Java me generic connection framework
Java me   generic connection frameworkJava me   generic connection framework
Java me generic connection framework
 
Introdução a api de baixo nível do java me
Introdução a api de baixo nível do java meIntrodução a api de baixo nível do java me
Introdução a api de baixo nível do java me
 
Introdução a game api do java me
Introdução a game api do java meIntrodução a game api do java me
Introdução a game api do java me
 
O futuro do Android
O futuro do AndroidO futuro do Android
O futuro do Android
 
Android Aula 5
Android Aula 5Android Aula 5
Android Aula 5
 
Android Aula 4
Android Aula 4Android Aula 4
Android Aula 4
 
Android Aula 3
Android Aula 3Android Aula 3
Android Aula 3
 
Android Aula 2
Android Aula 2Android Aula 2
Android Aula 2
 
Android Aula 1
Android Aula 1Android Aula 1
Android Aula 1
 
Ginga-J Emulator: uma Ferramenta de Execução de Aplicações Imperativas para o...
Ginga-J Emulator: uma Ferramenta de Execução de Aplicações Imperativas para o...Ginga-J Emulator: uma Ferramenta de Execução de Aplicações Imperativas para o...
Ginga-J Emulator: uma Ferramenta de Execução de Aplicações Imperativas para o...
 
Desenvolvendo para iOS em linux
Desenvolvendo para iOS em linuxDesenvolvendo para iOS em linux
Desenvolvendo para iOS em linux
 
WebProtocolo 2.0
WebProtocolo 2.0WebProtocolo 2.0
WebProtocolo 2.0
 
Arquitetura de apis gráficas do java dtv - lwuit e dtv-ui
Arquitetura de apis gráficas do java dtv - lwuit e dtv-uiArquitetura de apis gráficas do java dtv - lwuit e dtv-ui
Arquitetura de apis gráficas do java dtv - lwuit e dtv-ui
 

Desenvolvimento de Apps e Games para Android - Parte 6

  • 1. Desenvolvimento de Apps e Games para Android Por Erisvaldo Júnior. Parte 6 (29/09/2011)
  • 3. BackupManager Android desde a API Level 8 permite armazenar dados na Cloud sem necessidade de banco de dados externo (perfeito para armazenar SharedPreferences ou arquivos de configuração/informação simples). Como fazer isso com SharedPreferences? Primeiro passo: criar uma chave de acesso em http://code.google.com/android/backup/signup.html • Depois deve-se criar uma classe que herda de BackupAgentHelper e, no onCreate(), criar uma instância de SharedPreferencesBackupHelper; • No AndroidManifest.xml deve-se colocar os atributos android:allowBackups=“true” e android:backupAgent=“NomeDaSuaClasseQueHerdaDeBackupAgentHelper” em <application> e, por fim, adicionar a seguinte tag dentro de <application>:
  • 4. BackupManager Cada vez que você alterar um dado do grupo de SharedPreferences, você deve invocar o método dataChanged() da classe BackupManager. E agora? Está feito! Suas SharedPreferences serão armazenadas na nuvem, fazendo com que o usuário não perca a informação mesmo após reinstalar o seu aplicativo.
  • 5. Exemplo de BackupManager & SharedPreferences
  • 6. Banco de Dados SQLite Android provê suporte completo a bancos de dados SQLite. Os bancos criados serão acessíveis pelo nome para qualquer classe da aplicação, mas não poderão ser acessados externamente. Para se criar um banco de dados, pode-se usar o método openOrCreateDatabase() do contexto. Contudo, a forma recomendada é criar uma subclasse de SQLiteOpenHelper e sobrescrever o método onCreate() para a criação das tabelas.
  • 7. SQLiteOpenHelper O construtor de SQLiteOpenHelper recebe quatro parâmetros, conforme especificado abaixo. A versão do banco de dados é muito útil para o caso de o banco já existir e precisar ser atualizado (através da adição de novas tabelas e/ou colunas, por exemplo).
  • 8. SQLiteDatabase - query() As consultas com query() retornam um Cursor para navegação e recebem diversos parâmetros, cada qual com sua utilidade para a consulta, conforme explicitado abaixo.
  • 9. Exemplo de Banco de Dados SQLite
  • 10. Roteiro da Aula COMUNICAÇÃO LISTVIEW E LISTACTIVITY Bem vindo ao mundo da mobilidade
  • 12. Network Connection Há, ainda, uma quinta forma de persistência em Android: o armazenamento remoto. Pode-se usar uma rede (quando disponível) para armazenar e recuperar dados de seus serviços baseados na Web. Para realizar operações na rede, usam-se classes dos seguintes pacotes: • java.net; • android.net.
  • 16. URLConnection java.net.URL url = new java.net.URL(“http://developer.android.com"); java.net.URLConnection uc = url.openConnection(); BufferedReader br = new BufferedReader( new InputStreamReader ( uc.getInputStream() ) ); Faça uma aplicação que exiba o código- fonte de uma página qualquer cujo endereço é digitado em um EditText. OBS: Lembre-se de definir permissão de acesso à Internet no AndroidManifest.xml
  • 17. URLConnection Faça uma aplicação que acesse exemploget.php e mostre o retorno em um TextView. Exemplo: http://erisvaldojunior.com/exemploget.php?tipo=2 tipo=1 Retorno: Bom dia tipo=2 Retorno: Boa tarde tipo=3 Retorno: Boa noite Default Retorno: Oi
  • 19. ListView Provê uma lista de itens (com scrolling) provenientes de um Array/Lista ou de um banco de dados. ListView é abastecido através de um adaptador. Pode-se fazer seu próprio adaptador para determinar como os dados são lidos. ArrayAdapter e CursorAdapter • ArrayAdapter – trata dados baseados em Array ou Lists; • SimpleCursorAdapter – trata dados provenientes de um banco de dados SQLite.
  • 20. ListActivity Classe base para uma Activity cujo objetivo é mostrar uma lista. Provê facilidades como um método predefinido para quando um usuário seleciona um elemento da lista. Contém um adaptador que deve ser setado no próprio metodo onCreate() da ListActivity. Isso é feito através do setListAdapter(). onListItemClick() – método de ListActivity chamado quando um item da lista é selecionado. • Layouts Default – os itens da lista podem ter um layout padrão. Ex: android.R.layout.simple_list_item1; • Layouts Personalizados – seu layout (XML) deve conter uma ListView com o ID @android:id/list. Além disso, você pode ter um TextView @android:id/empty indicando lista vazia.
  • 21. Exemplo 1 Criar uma lista de elementos com ListActivity + Array Adapter + Layout Default.
  • 22. Exemplo 2 Criar uma lista de elementos com ListActivity + Array Adapter + Layout PERSONALIZADO. • Modificar o código anterior para o ArrayAdapter utilizar o layout abaixo, apontando para o R.id.label. rowlayout.xml
  • 23. ListActivity com layout dinâmico Nos exemplos anteriores, o layout é o mesmo para todos os itens. É possível mudar a aparência de itens específicos de uma ListView criando o seu próprio adaptador, através do método getView() e da classe LayoutInflater. MySimpleArrayAdapter extends ArrayAdapter • getView(int position, View convertView, ViewGroup parent) – método que deve ser sobrecarregado para personalizar a aparência do item da lista.
  • 24. Exemplo 3: Personalizar ícone de itens específicos da lista.
  • 25. Exemplo 3: Depois, basta setar o adaptador criado no método onCreate() da ListActivity.
  • 26. ListView, ListActivity e Adapters Há muitas outras possibilidades! • setOnItemLongClickViewListener() de ListView – apresenta o método onItemLongClick(), invocado quando o usuário mantém o dedo pressionado sobre um item; • Seleção Múltipla; • Cabeçalho e rodapé; • SimpleCursorAdapter • ContentProvider – exemplo: mostrar lista de contatos; • Banco de dados próprio (SQLite).
  • 27. obrigado • e-mail: erisvaldo@yupistudios.com.br • web: http://erisvaldojunior.com • twitter: @erisvaldojunior