Aula 3 ListView ListView é um componente que mostra uma lista de itens Os itens da lista são automaticamente inseridos usando um adapter, implementado pela classe ArrayAdapter, a partir de um fonte de dados, como uma lista ou uma consulta a um BD O adapter é contruindo usando o contexto da aplicação, o tipo de listView (em nosso caso, android.R.layout.simple_list_item_1) e a fonte de dados a preenchê-la Exemplo Vamos instanciar uma ArrayList de Strings, populá-la com valores arbitrários, e preencher com ela um ListView Exercício Implemente a aplicação Listagem, com a classe: NomeController, com o atributo estático alunos (ArrayList<String>); o método estático void adicionar (String nome) e o método estático getNomes(); Duas activities: MainActivity, com um EditText; um botão para chamar o método adicionar da classe NomeController, passando o nome digitado no EditText; e um item de menu para a transição para a segunda Activity ListaActivity, que exiba um ListView com os nomes adicionados na primeira activity; e um item de menu para voltar a MainActivity Arquivos Forma de persistir os dados depois da execução do aplicativo Em Java, é representada pela classe File São criados pelo método createNewFile() São editados pela classe FileWriter São abertos pela classe FileReader Sua leitura baseada em caracteres é feita pela classe BufferedReader Exemplo Vamos fazer uma aplicação, chamada FileDealer, que leia linhas de texto e as escreva num arquivo, localizado num sdcard, para posterior leitura de suas linhas, a ser armazenadas numa lista Para permitir a escrita externa, é necessário incluir a tag de permissão <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> no arquivo de manifesto da aplicação Exemplo import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.util.ArrayList; public class FileUtil { String caminho; File arquivo; public FileUtil(String nomeArquivo) throws Exception { caminho = "/sdcard/" + nomeArquivo + ".txt"; arquivo = new File(caminho); if (!arquivo.exists()) { arquivo.createNewFile(); } } Exemplo (continuação) public void escrever(String linha) throws Exception { FileWriter fw = new FileWriter(arquivo,true); fw.write(linha + "\n"); fw.close(); } public ArrayList<String> ler() throws Exception { BufferedReader br = new BufferedReader(new FileReader(caminho)); ArrayList<String> linhas = new ArrayList<>(); String linha; while ((linha = br.readLine()) != null) { linhas.add(linha); } return linhas; } } Exercício Implemente a aplicação Academica, com as classes: Aluno, com os atributos nome (String), telefone (String) e email (String); getters, setters e construtor AlunoController, com os métodos void adicionar(Aluno a), que adicione os dados de a a um arquivo; e o método listar, que retorne um ArrayList contendo todos os alunos cadastrados Exercício (continuação) Três activities: MainActivity, com um EditText; um botão para chamar o método adicionar da classe NomeController, passando um aluno com os dados digitados nos EditTexts; e um item de menu para a transição para a segunda Activity ListaActivity, que exiba um ListView com os nomes adicionados na primeira activity; e um item de menu para voltar a MainActivity; um clique num item da lista chamará a terceira activity DadosActivity, que exiba em TextViews os dados do aluno selecionado em ListaActivity