Problemas com ListView OnItemClick, OnClickListener - RESOLVIDO

Olá, faz pouco tempo que começei a trabalhar com java e android e nunca postei uma dúvida antes, mas devido a necessidade e dificuldade em resolve-la resolvi postar
desculpas sérias se eu disser alguma bobagem, pois realmente sou leigo quando o assunto é java e android!!
tenho uma aplicação que faz a inserção, alteração e exclusão de um dado chamado FASE, utilizo sqlite como bd, eis o problema, ao listá-las, começei utilizando o ArrayAdapter<FASE>, listando todas as minhas fases com o xml padrão do android(android.R.layout.simple_list_item_1) e a partir da mesma utilizei o método onItemClickListener da listView para alterar a fase respectiva, carregando outro xml com o SetContentView, mas como desejo um botão de exclusão por indice na listView, customizei o adapter da mesma com um xml próprio,o mesmo contém 3 textviews e 1 imagebutton, porém ao defini-lo, meu evento onItemClickListener parou de funcionar, ao pesquisar, descobri que o imagebutton tira o foco da minha view impossibilitando de reconhecer o evento onclick, segue abaixo o código para a listagem simples:

principal.java

    	ArrayAdapter&lt;Fase&gt; adapter = new ArrayAdapter&lt;Fase&gt;(cxt, android.R.layout.simple_list_item_1, dbHelper.getArrayTodasFases());
    	//DEFINE ADAPTER PARA EXIBIR LISTVIEW
    	lstFase.setAdapter(adapter);
    	lstFase.setItemsCanFocus(true);
    	
    	lstFase.setOnItemClickListener(new AdapterView.OnItemClickListener() {
			public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position,	long id) {
			Fase fase = (Fase) parent.getItemAtPosition(position);
			int indice = fase.getID();
			//Toast.makeText(cxt, indice+&quot;&quot;, Toast.LENGTH_SHORT).show();
			carregaCadastro(indice);			
    		//CarregaCadastro();
		}
	});

enfim criei a listagem da minha listView customizada, e criei uma classe FaseAdapter que herda a classe BaseAdapter, a solução que encontrei em um fórum norte-americano, foi editar os eventos diretamente no método getView da minha classe FaseAdapter, eis o grande problema, ao migrar do onItemClickListener que estava na minha classe principal.java para manipular a view diretamente no onClickListener dentro da minha classe FaseAdapter, não consigo mais chamar o método da minha activity principal.java onde chamo o método carregaCadastro()!! não consigo achá-la, não do jeito certo pelo menos, resumidamente, não consigo executar um método da minha activity Principal.java, dentro da minha classe FaseAdapter, mais especificamente dentro dos eventos onClick de seus botões, segue o código:

principal.java(trecho da minha activity onde defino o adapter)

FaseAdapter adapter = new FaseAdapter(cxt, dbHelper.getArrayTodasFases());
//DEFINE ADAPTER PARA EXIBIR LISTVIEW
lstFase.setAdapter(adapter);
lstFase.setItemsCanFocus(true);

lista_fase.xml(xml onde customizo a listView)

&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;LinearLayout android:id="@+lstFase/mainLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android" &gt; &lt;TextView android:id="@+lstFase/lblID" android:layout_width="50px" android:layout_height="wrap_content" android:gravity="center" &gt; &lt;/TextView&gt; &lt;TextView android:id="@+lstFase/lblBarra" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="|" &gt; &lt;/TextView&gt; &lt;TextView android:id="@+lstFase/lblNome" android:layout_width="165px" android:layout_height="fill_parent" android:gravity="center" &gt; &lt;/TextView&gt; &lt;ImageButton android:id="@+lstFase/btDeletar" android:layout_width="20px" android:layout_height="20px" android:src="@drawable/cancelar" &gt; &lt;/ImageButton&gt; &lt;/LinearLayout&gt;
FaseAdapter.java

public class FaseAdapter extends BaseAdapter{
	private List&lt;Fase&gt; listaFase;
	private Context cxt;
	public FaseAdapter(Context cxt, List&lt;Fase&gt; listaFase) {
		this.listaFase = listaFase;
		this.cxt = cxt;
	}
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return listaFase.size();
	}
	@Override
	public Object getItem(int position) {
		Fase fase = listaFase.get(position);
		return fase;
	}
	@Override
	public long getItemId(int position) {
		Fase fase = listaFase.get(position);
		return fase.getCodigo();
	}
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		//INSTANCIA RESPECTIVA FASE
		final Fase fase = listaFase.get(position);
		
		//CRIA INSTANCIA XML PARA OBJETOS NA VIEW
		View view;
		if (convertView != null) {
			view = convertView;
		}
		else {
			LayoutInflater inflater = (LayoutInflater) cxt.getSystemService(cxt.LAYOUT_INFLATER_SERVICE);
			view = inflater.inflate(R.layout.lista_fase, null);
		}
		view.setClickable(true);
		view.setFocusable(true);
		//Layout listagem
		//instancia objetos xml
		TextView lblID = (TextView) view.findViewById(R.lstFase.lblID);
		TextView lblNome = (TextView) view.findViewById(R.lstFase.lblNome);
		ImageButton btDeletar = (ImageButton) view.findViewById(R.lstFase.btDeletar);

		view.setOnClickListener(new View.OnClickListener() {
	        @Override
	        public void onClick(View v) {
				//CARREGA REGISTRO DE ACORDO COM O ITEM SELECIONADO
				int indice = fase.getID();
				//new Inicio().carregaCadastro(indice); FAIL - FORCE CLOSE
				//Inicio in = new Inicio().carregaCadastro(indice); - FAIL - FORCE CLOSE
				//in.carregaCadastro(indice); - FAIL - FORCE CLOSE
				carregaCadastro(indice);//MÉTODO NÃO ENCONTRADO
	        }
	    });
		btDeletar.setOnClickListener(new View.OnClickListener() {
	        @Override
	        public void onClick(View v) {
	        	AlertDialog alertDialog = new AlertDialog.Builder(cxt).create();
	            alertDialog.setTitle("Deseja realmente excluir?");
	            alertDialog.setIcon(R.drawable.icon);
	            alertDialog.setMessage("Ao clicar em 'sim' a fase "+fase.getNome()+" será excluído permanentemente!");
	            alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
	                  public void onClick(DialogInterface dialog, int which) {
	      	        	FaseDAO dbHelper = new FaseDAO(cxt);
	    	        	dbHelper.deletaFase(fase);
	    	        	dbHelper.close();
	    	        	Toast.makeText(cxt, "A fase '"+fase.getNome()+"' foi excluída!", Toast.LENGTH_SHORT).show();
				carregaCadastro(indice);//MÉTODO NÃO ENCONTRADO
	               }
		});
	            alertDialog.setButton2("Cancel", new DialogInterface.OnClickListener() {
	                  public void onClick(DialogInterface dialog, int which) {
	                	  return;
	                } 
	            });
	            alertDialog.show();
	        }
	    });
		
		//aplica efeitos nos objetos do xml correspondente
		lblID.setText(String.valueOf(fase.getCodigo()));
		lblNome.setText(fase.getNome());
		return view;
	}
}

Grato pela atenção e desculpe se falei alguma bobagem
Atenciosamente

Seu Adapter é uma inner class da Activity?

Voce nao vai conseguir chamar os métodos da activity sem ter uma referencia a ela.

olá Marky.Vasconcelos!
o Adapter [color=red]não[/color] é uma inner class da activity.

Pensei em usar um Intent mas como só utilizo uma activity então descartei tal opção.

dei uma bela pesquisada mas não tenho ideia de como fazer uma referência a minha classe activity sem instáncia-la, quando fiz isso ocorreu o Force Close, você poderia me dar um exemplo?

Grato!

Voce não precisa instanciar, passe como referencia no construtor do Adapter e use ela para chamar os métodos.

muito obrigado Marky.Vasconcelos!
fiquei tanto tempo olhando pro mesmo código que a solução é relativamente simples! rsrs
muito obrigado! sua ajuda foi de grande valia! :stuck_out_tongue: