Desenvolvimento de Apps e Games para Android - Parte 6
O documento discute o uso do BackupManager para armazenar dados em nuvem, como SharedPreferences, e fornece um exemplo de como implementá-lo. Também aborda o uso do SQLiteOpenHelper para criar e gerenciar bancos de dados SQLite em apps Android.
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 quevocê 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.
Banco de DadosSQLite
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 deSQLiteOpenHelper 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()
Asconsultas com query() retornam um Cursor para navegação e
recebem diversos parâmetros, cada qual com sua utilidade para a
consulta, conforme explicitado abaixo.
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.
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çãoque 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
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 umalista 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 layoutdinâ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.
ListView, ListActivity eAdapters
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).