Apostila de Android - Hachi Tecnologia
319 pág.

Apostila de Android - Hachi Tecnologia


DisciplinaProgramação Computacional para Engenharia da Computação24 materiais786 seguidores
Pré-visualização50 páginas
com a seguinte implementação:
	 /**
	 * Altera o registro no banco de dados.
	 */
Android - Desenvolvendo aplicativos para dispositivos móveis
© 2012 Hachi Tecnologia | treinamento@hachitecnologia.com.br
 132
	 public void atualiza(ObjetoEmprestado objeto) {
	 	 // Encapsula no objeto do tipo ContentValues os valores a serem atualizados no banco de dados
	 	 ContentValues values = new ContentValues();
	 	 values.put("objeto", objeto.getObjeto());
	 	 values.put("pessoa", objeto.getContato().getNome());
	 	 values.put("telefone", objeto.getContato().getTelefone());
	 	
 
 // Instancia uma conexão com o banco de dados, em modo de gravação
	 	 SQLiteDatabase db = dbHelper. getWritableDatabase();
	 	
	 	 // Atualiza o registro no banco de dados
	 	 db.update("objeto_emprestado", values, "_id=?", new String[] { objeto.getId().toString() });
	 	
 
 // Encerra a conexão com o banco de dados
	 	 db.close();
	 }
16. Agora devemos criar um Listener que será responsável por implementar o evento a ser disparado quando o usuário 
clicar em um dos itens mostrados na ListView. Em nosso caso, o evento deverá abrir a tela para edição do registro 
selecionado. Para isto, crie um pacote chamado br.com.hachitecnologia.devolvame.listener e nele adicione uma 
nova classe chamada ListaObjetosEmprestadosListener, com a seguinte implementação:
public class ListaObjetosEmprestadosListener implements AdapterView.OnItemClickListener {
	
	 private final ListaObjetosEmprestadosActivity activity;
	 /**
 
 * Nosso Construtor deverá receber como parâmetro a instância da Activity 
	 	 * ListaObjetosEmprestadosActivity para ter acesso ao objeto ListView contendo 
 
 * a lista de objetos emprestados. Isto nos permitirá pegar na lista o item que foi selecionado 
 
 * pelo usuário.
	 	 * 
	 	 */
	 public ListaObjetosEmprestadosListener(ListaObjetosEmprestadosActivity activity) {
	 	 this.activity = activity;
	 }
	 	 /**
 
 * Método que será disparado quando o usuário selecionar o item na ListView.
	 	 */
	 public void onItemClick(AdapterView<?> adapterView, View view, int posicao, long idPosicao) {
 
 // Declarando a Intent que irá invocar a Activity &quot;CadastraObjetoEmprestadoActivity&quot;
	 	 Intent i = new Intent(activity, CadastraObjetoEmprestadoActivity.class);
	 	
	 	 /**
 
 * Passando o objeto selecionado pelo usuário, na ListView, como parâmetro 
	 	 * para a Activity &quot;CadastraObjetoEmprestadoActivity&quot;, para que esta
 
 * possa editar as informações do registro selecionado.
	 	 */
	 	 i.putExtra(&quot;itemSelecionadoParaEdicao&quot;, 
	 	 	 (ObjetoEmprestado)activity.getListaObjetosEmprestados().getItemAtPosition(posicao));
	 	 // Invoca a Activity definida em nossa Intent
	 	 activity.startActivity(i);
	 }
}
17. Implementado o Listener, devemos agora ativá-lo no objeto ListView da nossa Activity. Para isto, adicione a seguinte 
linha de código ao final do método onResume() da Activity ListaObjetosEmprestadosActivity:
	 /**
Android - Desenvolvendo aplicativos para dispositivos móveis
© 2012 Hachi Tecnologia | treinamento@hachitecnologia.com.br
 133
 * Ativa o Listener que contém o evento a ser disparado ao clicar
	 * sobre um item da nossa ListView.
	 */
	 listaObjetosEmprestados.setOnItemClickListener(new ListaObjetosEmprestadosListener(this));
18. Implemente um método no DAO que execute as tarefas de adicionar e alterar registros no banco de dados, usando o 
campo ID do objeto para determinar se este deverá ser adicionado ou alterado. Para isto, crie um método na classe 
ObjetoEmprestadoDAO, chamado salva(), com a seguinte implementação:
	 /**
	 * Salva objeto no banco de dados.
 * Caso o objeto não exista no banco de dados, ele o adiciona.
	 * Caso o objeto exista no banco de dados, apenas atualiza os valores dos campos modificados.
	 * 
	 * @param objeto
	 */
	 public void salva(ObjetoEmprestado objeto) {
	 	 /**
 
 * Se o ID do objeto é nulo é porque ele ainda não existe no banco de dados,
	 	 * logo subentende-se que queremos adicionar o objeto no banco de dados.
 
 * Sendo assim, chamaremos o método adiciona() já definido no DAO.
	 	 */
	 	 if (objeto.getId() == null) {
	 	 	 adiciona(objeto);
	 	 /**
 
 * Caso o objeto possua um ID é porque ele já existe no banco de dados, logo 
	 	 * subentende-se que queremos alterar seus dados no banco de dados.
 
 * Sendo assim, chamaremos o método atualiza() já definido no DAO.
	 	 */
	 	 } else {
	 	 	 atualiza(objeto);
	 	 }
	 }
19. Altere o código da Activity CadastraObjetoEmprestadoActivity para que ela possa executar a funcionalidade tanto 
de cadastrar quanto a de alterar os registros salvos no banco de dados. Para isto, substitua a seguinte linha de código 
abaixo, presente no método onCreate() da Activity CadastraObjetoEmprestadoActivity:
	 // Instancia um novo objeto do tipo ObjetoEmprestado
	 objetoEmprestado = new ObjetoEmprestado();
 por este trecho de código:
	 /**
 
 * Recebe o objeto recebido como parâmetro da ListView para edição.
 	 */
 
 objetoEmprestado = (ObjetoEmprestado) getIntent().getSerializableExtra(\u201citemSelecionadoParaEdicao\u201d);
 
 	 if (objetoEmprestado == null) {
 	 	 // Instancia um novo objeto do tipo ObjetoEmprestado
 	 	 objetoEmprestado = new ObjetoEmprestado();
 	 } else {
 	 	 campoObjeto.setText(objetoEmprestado.getObjeto());
 	 	 campoNomePessoa.setText(objetoEmprestado.getContato().getNome());
	 	 campoTelefone.setText(objetoEmprestado.getContato().getTelefone());
 	 }
Android - Desenvolvendo aplicativos para dispositivos móveis
© 2012 Hachi Tecnologia | treinamento@hachitecnologia.com.br
 134
20. Ainda na Activity CadastraObjetoEmprestadoActivity, altere o evento onClick() do botão \u201cSalvar\u201d substituindo a 
linha de código abaixo:
	 // Salva o objeto no banco de dados
	 dao.adiciona(objetoEmprestado);
	 pela seguinte linha:
	 // Salva o objeto no banco de dados
	 dao.salva(objetoEmprestado);
21. Faça com que a Activity ListaObjetosEmprestadosActivity seja aberta após o usuário cadastrar ou alterar um 
registro no banco de dados. Para isto, adicione a seguinte linha de código ao final do evento onClick() do botão 
\u201cSalvar\u201d da Activity CadastraObjetoEmprestadoActivity:
	 // Depois de salvar, vai para a Lista dos objetos emprestados
	 startActivity(new Intent(getApplicationContext(), ListaObjetosEmprestadosActivity.class));
22. Implemente no DAO, um método que remova um determinado registro no banco de dados. Para isto, adicione na 
classe ObjetoEmprestadoDAO um método chamado remove() com o seguinte conteúdo:
	 /**
	 * Remove um registro no banco de dados.
	 */
	 public void remove(ObjetoEmprestado objeto) {
 
 // Instancia uma conexão com o banco de dados, em modo de gravação
	 	 SQLiteDatabase db = dbHelper.getWritableDatabase();
	 	
	 	 // Remove o registro no banco de dados
	 	 db.delete(&quot;objeto_emprestado&quot;, &quot;_id=?&quot;, new String[] { objeto.getId().toString() });
	 	
 
 // Encerra a conexão com o banco de dados
	 	 db.close();
	 }
23. Na classe ListaObjetosEmprestadosActivity, crie uma constante que será usada para definir o ID da opção 
\u201cApagar\u201d no Context Menu que iremos costruir para remover do banco de dados um item mostrado na ListView. Crie, 
então, a seguinte variável na classe ListaObjetosEmprestadosActivity:
 // ID da opção &quot;Apagar&quot; do menu de contexto
	 private static final int MENU_APAGAR = Menu.FIRST;
24. Na Activity ListaObjetosEmprestadosActivity defina o método onCreateContextMenu() que irá criar na ListView 
um Context Menu e adicionar a opção \u201cApagar\u201d para que o usuário possa apagar um determinado item no banco de 
dados. Para isto, adicione o seguinte método na classe ListaObjetosEmprestadosActivity:
	 /**
	 * Cria o menu
Carregar mais