Tutorial Android #2 – Obtendo Dados do Formulário

Padrão

Olá leitores! No post anterior começamos o nosso projeto Android criando um formulário simples, modificando apenas o arquivo XML de layout. Hoje, vamos ver como obter o que foi digitado no formulário para manipularmos dentro de uma Activity. Se você não tem o projeto anterior, pode baixar aqui. Para abrir o projeto, descompacte-o dentro de seu workspace, e em seguida, no Eclipse, vá em File -> Import… e procure pela opção Existing Projects into Workspace, dentro da categoria General.

O primeiro passo é criar a classe de negócio (model) que armazenará os dados vindos do formulário. Crie uma classe chamada Restaurante e salve-a no pacote net.rafaeltoledo.restaurante.model. A classe terá os campos nome e endereco, ambos to tipo String. Lembrando que sempre encapsulamos os campos das classes de negócio. A classe Restaurante ficará assim:

package net.rafaeltoledo.restaurante.model;

public class Restaurante {

	private String nome = "";
	private String endereco = "";

	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEndereco() {
		return endereco;
	}
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}
}

Aqui vão algumas dicas para o Eclipse: para gerar os métodos get e set automaticamente, pressione Alt + Shift + S e selecione a opção Generate Getters and Setters…. E pra formatar seu código-fonte automaticamente, pressione Ctrl + Shift + F. E por último, pra corrigir os imports automaticamente, o atalho é Ctrl + Shift + O. 😉

A classe Restaurante simplesmente representa um restaurante com os dados que definimos no formulário (nome e endereço). O próximo passo, então, é obtermos os dados do formulário XML e os colocarmos em um objeto do tipo Restaurante. Abra a Activity ListaRestaurantes e edite-a.

Ela era assim

package net.rafaeltoledo.restaurante;

import android.app.Activity;
import android.os.Bundle;

public class ListaRestaurantes extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

e vai ficar assim

package net.rafaeltoledo.restaurante;

import net.rafaeltoledo.restaurante.model.Restaurante;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class ListaRestaurantes extends Activity {

	Restaurante r = new Restaurante();

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		Button salvar = (Button) findViewById(R.id.salvar);
		salvar.setOnClickListener(onSave);
	}

	private OnClickListener onSave = new OnClickListener() {

		public void onClick(View arg0) {
			EditText nome = (EditText) findViewById(R.id.nome);
			EditText endereco = (EditText) findViewById(R.id.end);

			r.setNome(nome.getText().toString());
			r.setEndereco(endereco.getText().toString());
		}
	};
}

O grande responsável pelo acesso aos componentes do formulário XML é a classe chamada R. Esta classe é gerada automaticamente, sendo atualizada de acordo com o conteúdo mapeado no arquivo XML. Até por esse motivo, ela fica localizada na pasta gen do projeto, separada do restante dos códigos-fonte.

No código-fonte, o que fazemos é obter o botão declarado no XML (linha 20) e em seguida atribuir um listener (ou “ouvinte”) para quando o botão for clicado. Assim, toda vez que alguém clicar no botão salvar, será chamado um determinado método.

Para esse propósito, declaramos uma classe interna como um membro privado da Activity, chamando-a se onSave. Implementar esta classe, por sua vez, requere implementar também o método abstrato onClick() que será chamado toda vez que o botão for clicado.

Neste caso, obtemos os dois campos (nome e endereco) do XML, jogando-os em duas instâncias da classe EditText. Em seguida, obtemos seus conteúdos e os atribuímos no objeto do tipo Restaurante chamado r. Este objeto foi declarado como um membro privado da Activity, sendo previamente instanciado em sua própria inicialização.

Apesar de ainda não ser possível ter uma visualização disso funcionando, experimente executar e verificar se não ocorre nenhum erro ao pressionar o botão Salvar no formulário.

Caso não tenha conseguido acompanhar ou algum outro problema, você pode baixar o projeto aqui.

Por hoje é isso. No próximo da série, vamos melhorar a estética do nosso formulário, para ficar mais “apresentável”. Até lá! 🙂

5 comentários sobre “Tutorial Android #2 – Obtendo Dados do Formulário

    • É simples. Clique com o botão direito sobre a pastinha src, selecione New -> Class. No campo package, coloque net.rafaeltoledo.restaurante.model e coloque Restaurante no campo Name. Depois é só confirmar e inserir os códigos. Você pode automatizar a geração dos métodos de acesso (getters / setters) clicando com o botão direito quando estiver editando o código, selecionar Source -> Generate Getters and Setters…

      Espero que tenha ajudado!

  1. Jorge M. Abdalla

    Na linha setContentView(R.layout.main); o “main” da um erro, entao substitui por activity_lista, nao sei se ta certo, poderia explicar oq pode estar ocorrendo?

Deixe uma resposta