Criar botão fora do ListAdapter - Android

Boa tarde irmãos,

Tenho um list e um lisAdapter que cria automaticamente campos de formulário pegando informações do banco. Até aí tudo bem.

O problema que ao criar o botão de cadastrar ele está criando vários botões.

Como faço para criar este botão uma única vez?

Desde já obrigado pela força pessoal.

Seguem os dados

Meu Controller


package br.com.mylims.controller;

import java.util.List;
import br.com.mylims.model.ColetaDao;
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import br.com.mylims.bean.Info;


public class CadastroColetaController extends ListActivity{
	
	
	private static final String CATEGORIA = "coleta";
	
	private static ColetaDao coletaDao;
	
	private List<Info> infoBean;
	
	public void onCreate(Bundle icicle){
		
		super.onCreate(icicle);
		
		coletaDao = new ColetaDao(this);
		
		Bundle extras = getIntent().getExtras();
		
		String idAmostra = extras.getString("idAmostra");
		
		Log.i(CATEGORIA, "idamostra: " + idAmostra);
		
		infoBean = coletaDao.listaColeta(idAmostra);
		
		setListAdapter(new ColetaAdapter(this, infoBean));
		

	}
	
	
}

Meu Adapter


package br.com.mylims.controller;

import java.util.List;
import java.util.logging.Logger;

import org.w3c.dom.Text;

import br.com.mylims.R;
import br.com.mylims.bean.Info;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;

public class ColetaAdapter extends BaseAdapter{
	
	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);
			
			Log.i(CATEGORIA, "ID INFO: " + recuperaIdInfo);
			
		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);
			
			Log.i(CATEGORIA, "ID INFO: " + recuperaIdInfo);
			
			
		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);
			
			Log.i(CATEGORIA, "ID INFO: " + recuperaIdInfo);
			
		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);
			
			Log.i(CATEGORIA, "ID INFO: " + recuperaIdInfo);
			
		
			
		break;
		
		case 5:
			
			nomeInfoTipo5.setText(infoBean.getNomeInfo());
			linearLayout.addView(nomeInfoTipo5);
			
			sim.setText("Sim");
			nao.setText("Não");
			
			escolha.addView(sim);
			escolha.addView(nao);
			
			linearLayout.addView(escolha);
			
			Log.i(CATEGORIA, "ID INFO: " + recuperaIdInfo);
			
		break;
		
		}
		
		
		Button b = new Button(context);
		b.setText("CADASTRAR");
		
		b.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
			
				
			}
		});
		
		linearLayout.addView(b);
		
		return linearLayout;
		
		
	}
	

}