[Resolvido] Urgente - Como criar campos de formulários dinamicamente - ANDROID

Bom dia irmãos.

Preciso de forma urgente criar uma tela que carrega os campos de um formulário dinamicamente.

Exemplo:

Se meus dados vindo do banco for do tipo 1, aparece um botão
Se for do tipo 2 aparece um EditText

Alguém consegue me dar uma força?

Preciso fazer isto em 3 horas.

Abs

Bom, se vc não se preocupar com a disposição dos elementos na tela, vc pode usar o LinearLayout, que eu acho mais fácil:
http://developer.android.com/reference/android/widget/LinearLayout.html
http://stackoverflow.com/questions/3204852/android-add-a-textview-to-linear-layout-programmatically

Espero ter ajudado

Oi eliangela,

Desculpe pela demora em lhe responder. Estou muito atolado.

Conseguir criar o formulário.

O único problema agora é a criação do botão que não aceita a minha intent.

Tem como colocar uma Activity em uma classe contendo BaseAdapter?

Segue meu código


package br.com.mylims.controller;

import java.util.List;
import br.com.mylims.bean.Info;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;

import android.widget.TextView;

public class ColetaAdapter extends BaseAdapter{
	
	//ColetaDao coletaDao = new ColetaDao(context);
	
	private Context context;
	private List<Info> lista;
	
	private static final String CATEGORIA = "coleta";
	
	
	public ColetaAdapter(Context context,  List<Info> lista) {
		super();
		this.context = context;
		this.lista = lista;
		
	}

	@Override
	public int getCount() {
		
		return lista.size();
		
	}

	@Override
	public Object getItem(int position) {
		
		return lista.get(position);
	}

	@Override
	public long getItemId(int position) {
		
		
		
		return position;
	}
	
		
	
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		
		
		Info infoBean = lista.get(position);
		
		LinearLayout linearLayout = new LinearLayout(context);
		linearLayout.setOrientation(LinearLayout.VERTICAL);
		
		/**RECUPERA O ID DO TIPODADO**/
		int recuperaTipoDado = infoBean.getCodTipoDado();
		
		/**RECUPERA O CDINFO**/
		int recuperaIdInfo = infoBean.getCodInfo();
		
		TextView nomeInfoTipo1 = new TextView(context);
		TextView nomeInfoTipo2 = new TextView(context);
		TextView nomeInfoTipo3 = new TextView(context);
		TextView nomeInfoTipo4 = new TextView(context);
		TextView nomeInfoTipo5 = new TextView(context);
		
		EditText editText = new EditText(context); /**CAMPO DO TIPO TEXTO QUE RECEBERA OS SEGUINTES CAMPOS (1-TEXTO, 2-NUMERICO, 3-NUMERICO FRACIONARIO, 4-DATA E HORA)**/
		
		EditText texto = new EditText(context); /**CAMPO DO TIPO TEXTO**/
		EditText numerico = new EditText(context); /**CAMPO DO TIPO NUMERICO**/
		EditText numericoFracionario = new EditText(context); /**CAMPO DO TIPO NUMERICO FRACIONARIO**/
		EditText dataHora = new EditText(context); /**CAMPO DO TIPO **/
		
		/**CAMPOS DO TIPO ESCOLHA**/
		
		RadioGroup escolha = new RadioGroup(context); /**CAMPO DO TIPO ESCOLHA**/
		
		RadioButton sim = new RadioButton(context); /**CAMPO DO TIPO ESCOLHA - RESPOSTA SIM**/
		RadioButton nao = new RadioButton(context); /**CAMPO DO TIPO ESCOLHA  - RESPOSTA NAO**/
		
		/**FORMATA OS CAMPOS**/
		
		/**CAMPO TEXTO**/
		
		texto.setWidth(50);
		
		/**CAMPO NUMERICO**/
		
		numerico.setWidth(50);
		
		/**CAMPO NUMERICO FRACIONARIO**/
		
		numericoFracionario.setWidth(50);
		
		/**CAMPO DATA E HORA**/
		
		
		dataHora.setWidth(50);
		
		switch (recuperaTipoDado) {
		
		case 1:
			
			nomeInfoTipo1.setText(infoBean.getNomeInfo());
			linearLayout.addView(nomeInfoTipo1);
			editText = texto;
			editText.setText("");
			editText.setHeight(40);
			editText.setInputType(android.text.InputType.TYPE_CLASS_TEXT);
			editText.setId(recuperaIdInfo);
			
			linearLayout.addView(editText);
			
			
		break;
		
		case 2:
			
			nomeInfoTipo2.setText(infoBean.getNomeInfo());
			linearLayout.addView(nomeInfoTipo2);
			
			editText = numerico;
			editText.setText("");
			editText.setHeight(40);
			
			editText.setInputType(android.text.InputType.TYPE_CLASS_NUMBER);
			editText.setId(recuperaIdInfo);
			
			linearLayout.addView(editText);
			
			
		break;
		
		case 3:
			
			nomeInfoTipo3.setText(infoBean.getNomeInfo());
			linearLayout.addView(nomeInfoTipo3);
			
			
			editText = numericoFracionario;
			editText.setText("");
			editText.setHeight(40);
			
			editText.setInputType(android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL);
			editText.setId(recuperaIdInfo);
			
			linearLayout.addView(editText);
			
			
		break;
		
		case 4:
			
			
			nomeInfoTipo4.setText(infoBean.getNomeInfo());
			linearLayout.addView(nomeInfoTipo4);
			
			editText = dataHora;
			editText.setText("");
			editText.setHeight(40);
			
			editText.setInputType(android.text.InputType.TYPE_CLASS_DATETIME);
			editText.setId(recuperaIdInfo);
			
			linearLayout.addView(editText);
		
			
		break;
		
		case 5:
			
			nomeInfoTipo5.setText(infoBean.getNomeInfo());
			linearLayout.addView(nomeInfoTipo5);
			
			sim.setText("Sim");
			nao.setText("Não");
			
			escolha.addView(sim);
			escolha.addView(nao);
			escolha.setId(recuperaIdInfo);
			
			linearLayout.addView(escolha);
			
		break;
		
		}
		
		
		if (position == getCount() - 1) {
		
		
			LinearLayout linearLayout2 = new LinearLayout(context);
			linearLayout2.setOrientation(LinearLayout.HORIZONTAL);
			
			Button botaoCadastrar = new Button(context);
			botaoCadastrar.setText("CADASTRAR");
			linearLayout2.addView(botaoCadastrar);
			
			Button botalVoltar = new Button(context);
			botalVoltar.setText("VOLTAR");
			linearLayout2.addView(botalVoltar);
			
			
			botaoCadastrar.setOnClickListener(new View.OnClickListener() {
				
				@Override
				public void onClick(View v) {
					
					Log.i(CATEGORIA, "teste btn cadastrar");
					
				}
			});
			
			
			botalVoltar.setOnClickListener(new View.OnClickListener() {
				
				
				@Override
				public void onClick(View v) {
					
				//	telaListaAmostra();
					
					Log.i(CATEGORIA, "teste btn voltar");
				}

				
			});
			
		
			linearLayout.addView(linearLayout2);
		
			
		}
		
		
		return linearLayout;
		
		
	}
	
	

}

Att.