Neste artigo, que é a primeira parte de uma série de quatro, iremos ver como criar uma aplicação rudimentar que mostre os básico para desenvolver uma aplicação para a plataforma Android. Nessa nossa aplicação, teremos apenas duas telas, que serão um formulário de entrada de dados e um outro para listagem dos dados inseridos.
O início
Para começo de conversa, devemos criar um projeto no Eclipse. Aqui, vamos supor que você já tenha instalado na sua máquina o SDK do Android e o plugin ADT para o e Eclipse. Caso ainda não tenha feito isso, siga os passos descritos aqui.
Para criar o projeto, siga os seguintes passos:
- Clique em File → New → Project
- Na caixa de diálogo que se abre, selecione Android/Android Project e clique em Next
- Informe um nome para o projeto e clique em Next
- Selecione sobre qual versão do SDK sua aplicação rodará e clique em Next
- Informe um nome para o pacote que irá armazenar os arquivos de código de dua aplicação e clique em Finish.
Criando a interface
Agora vamos criar a interface da nossa aplicação. Como falamos anteriormente, a nossa aplicação será composta de uma formulário para entrada de dados e outro para listar os dados inseridos que permita que ao tocarmos em um item da lista, seja aberto uma tela com mais detalhes sobre o item selecionado.
Para começar a criar a nossa interface, abra o arquivo res/layout/main.xml. A primeira coisa a se fazer aqui é apagar todos os widgets criados por padrão para essa interface. Para isso, vamos passar a visualização do código xml do projeto, clicando na aba main.xml na parte de baixo da janela. Apague todo o código existente e use o código a seguir:
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" android:textSize="16sp" > </TextView>
Agora, no aquivo *.java que foi criado automaticamente pelo SDK, e se encontra no diretório src/<nome_do_pacote> com o mesmo nome da Activity que foi informado no momento da instalação, substitua o código da classe <nome_da_activity>Activity pelo código abaixo:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new ArrayAdapter<String>(this, R.layout.main, List.retornaLista())); ListView lv = getListView(); lv.setTextFilterEnabled(true); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), ((TextView) arg1).getText(), Toast.LENGTH_SHORT).show(); } }); }
Para que esse código funcione, precisamos adicionar duas classes: uma chamada ListItem.java que possuirá todos os atributos de nosso formulário e uma classe List.java que será a lista de itens propriamente dita, e deve ter obrigatoriamente os métodos adicionarItem e retornarLista. Um exemplo do código dessas classes pode ser visto a seguir:
ListItem.java
class ListItem { private: String Primeiro_Nome; String Ultimo_Nome; ListItem proximo; public: String getPrimeiroNome(); void setPrimeiroNome(String nome); String getUltimoNome(); void setUltimoNome(String nome); ListItem(String nome1, String nome2); }
List.java
class List { private: ListItem primeiro; public: void adicionarItem(String nome1, String nome2); String [] retornaLista(); }
Agora adicione ao projeto um arquivo XML com o nome adiciona.xml que conterá o formulário que permitirá adicionarmos novos itens a nossa lista. O código XML para esse arquivo se parecerá com o seguinte:
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Nome:" android:textAppearance="?android:attr/textAppearanceLarge" /> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" > <requestFocus /> </EditText> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Ok" /> </TableRow> </TableLayout>
Para adicionar outros campos, basta copiar e colar o seguinte trecho de código, lembrando sempre de alterar o nome do campo (identificado pelo atributo android:id), e obviamente, o texto que aparece na tela (identificado por android:text):
<TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Nome:" android:textAppearance="?android:attr/textAppearanceLarge" /> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" > <requestFocus /> </EditText>
Vale lembrar que todos os atributos da classe ListItem.java descrita acima deve ter um TextView/EditView associado a ele. Agora, você precisa adicionar uma nova classe no seu projeto, que irá executar os comandos associados ao clique do botão adicionado ao formulário. O código dessa classe é mostrado a seguir:
private EditText nome1, nome2; private Button okButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.nome1 = (EditText) this.findViewById(R.id.editText1); this.nome2 = (EditText) this.findViewById(R.id.editText2); this.okButton = (Button) this.findViewById(R.id.button1); this.okButton.setOnClickListener(new OnClickListener() { public void onClick(final View v) { List.adicionarItem(nome1, nome2); } }); }
É preciso salientar aqui que cada TextView/EditView adicionado ao formulário deve ter seu par equivalente de atributos private input/output, assim como qualquer outro widget adicionado ao formulário. Para cada atributo/widget, pode/deve ser criado um Listener como o okButton.setOnClickListener onde é inserido o código que descreve como a ação indica pelo nome da função deve ser executada.