[Resolvido] onListItemClick

Boa tarde pessoal,

Preciso conseguir selecionar um determinado item de uma listagem feita sem xml.

Como faço para criar o método onListItemClick neste código?


package br.com.mylims.controller;

import java.util.List;

import br.com.mylims.bean.Amostra;
import br.com.mylims.model.EmpresaProcessoDao;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;

public class TelaListaEmpresaProcessoController extends Activity{

    private static final String CATEGORIA = "coleta";
    
    EmpresaProcessoDao empresaProcessoDao = new EmpresaProcessoDao(this);
    
    List<Amostra> empresaProcessoBean;
    
    public void onCreate(Bundle icicle){
        
        super.onCreate(icicle);
            
        Bundle extras = getIntent().getExtras();
                
        final String login = extras.getString("login");
        final String senha = extras.getString("senha");
        
        Log.i(CATEGORIA, "LOGIN: " + login);
        Log.i(CATEGORIA, "senha: " + senha);
            
        empresaProcessoBean = empresaProcessoDao.getListaEmpresaProcesso();
        
        int total = empresaProcessoBean.size();
        
        LinearLayout linearLayout = new LinearLayout(this);
        linearLayout.setOrientation(LinearLayout.VERTICAL);
        
        ScrollView scrollView = new ScrollView(this);
        scrollView.addView(linearLayout);
        
        for(int i = 0; i < total; i++){
        
            TextView textView = new TextView(this);
            textView.setText(empresaProcessoBean.get(i).getEmpresa().getNomeFantasia());
            linearLayout.addView(textView);
          
        }
        
        
        Button botaoVoltar = new Button(this);
        botaoVoltar.setText("Voltar");
        linearLayout.addView(botaoVoltar);
        
        botaoVoltar.setOnClickListener(new OnClickListener() {
      
        
        @Override
        public void onClick(View v) {
        
            finish();
            
            
        }
            
    });
        
        this.setContentView(scrollView);
    }
        

    
    public void listaAmostras(int i){
        
        Amostra amostProBean = empresaProcessoBean.get(i);
        
        Intent it = new Intent(this, ListaAmostraController.class);
        
        // ENVIA OS PARAMETROS IDAUXEMPRESA E IDPROCESSO PARA LISTAR AS SUAS AMOSTRAS
        
        it.putExtra("idAuxEmpresa", String.valueOf(amostProBean.getEmpresa().getIdAuxEmpresa()));
        it.putExtra("idProcesso", amostProBean.getIdProcesso());
        
    }
    
    
    
}

Alguém consegue me ajudar?

Att

Será que assim dá certo?

[code]for(int i = 0; i < total; i++){
TextView textView = new TextView(this);
textView.setText(empresaProcessoBean.get(i).getEmpresa().getNomeFantasia());

 textView..setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
           // ...
      }
 });

 linearLayout.addView(textView);  

}[/code]

Ou você pode fazer assim:

[code]// Na declaração da Activity
public class SuaActivity extends Activity implements OnClickListener{
// …
public void seuMetodo(){
// …
for(int i = 0; i < total; i++){
TextView textView = new TextView(this);
textView.setText(empresaProcessoBean.get(i).getEmpresa().getNomeFantasia());

           // Adiciona o onClickListener na TextView
           textView.setOnClickListener(this);
  
           linearLayout.addView(textView);    
      }  
 }
 
 // Implementa o onClick
 public void onClick(View arg0) {
      // ...
 }

}[/code]

Fala Adriel,

Obrigado pela força.

Agora só acontece um problema.

Possuo o método listaAmostras(int i);

Quando chamo este método dentro da ação do botão, ele não aceita o i do for na hora de passa-lo no parâmetro.

Método


 public void listaAmostras(int i){  
          
        Amostra amostProBean = empresaProcessoBean.get(i);  
          
        Intent it = new Intent(this, ListaAmostraController.class);  
          
        // ENVIA OS PARAMETROS IDAUXEMPRESA E IDPROCESSO PARA LISTAR AS SUAS AMOSTRAS  
          
        it.putExtra("idAuxEmpresa", String.valueOf(amostProBean.getEmpresa().getIdAuxEmpresa()));  
        it.putExtra("idProcesso", amostProBean.getIdProcesso());  
          
    }  

For


 for(int  i = 0; i < total; i++){  
          
            TextView textView = new TextView(this);  
            textView.setText(empresaProcessoBean.get(i).getEmpresa().getNomeFantasia());  
            
            textView.setOnClickListener(new View.OnClickListener() {  
                @Override  
                public void onClick(View v) {  
                    
                	listaAmostras(i); // NESTA LINHA. ELE PEDE PARA O I do for SER final, mas quando coloco ele da erro e manda tirar.
                	
                }  
           });

Sobe saberia me explicar pq?

Grande abraço.

Esta é a mensagem que ele gera.

cannot refer to a non-final variable i inside an inner class defined in a different method

O que acontece é que esse i do [color=blue]public void onClick(View v) { listaAmostras(i) }[/color] está em um contexto diferente. Chegou a tentar fazer da forma abaixo?

Caso isso não resolva, acredito que aquela outra forma que citei, implementando o OnClickListener, seria melhor.

Fiz das duas formas e deu o mesmo resultado, mas creio que isto eu acabei de resolver.

Ele está chamando o método e passando os parâmetros certinho no Log.i.

O problema agora é que a ação do botão não entende a minha intent.

Ele entra no Try certinho, mas está desconsiderando não está indo para outra tela.

Consegue me dar uma força?

Código atualizado


package br.com.mylims.controller;

import java.util.List;

import br.com.mylims.bean.Amostra;
import br.com.mylims.model.EmpresaProcessoDao;
import br.com.mylims.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;

public class TelaListaEmpresaProcessoController extends Activity{

	private static final String CATEGORIA = "coleta";
	
	EmpresaProcessoDao empresaProcessoDao = new EmpresaProcessoDao(this);
	
	private List<Amostra> empresaProcessoBean;


 public void onCreate(Bundle icicle){  
          
        super.onCreate(icicle);  
              
        Bundle extras = getIntent().getExtras();  
                  
        final String login = extras.getString("login");  
        final String senha = extras.getString("senha");  
          
        Log.i(CATEGORIA, "LOGIN: " + login);  
        Log.i(CATEGORIA, "senha: " + senha);  
              
        empresaProcessoBean = empresaProcessoDao.getListaEmpresaProcesso();  
          
        int total = empresaProcessoBean.size();  
          
        LinearLayout linearLayout = new LinearLayout(this);  
        linearLayout.setOrientation(LinearLayout.VERTICAL);  
          
        ScrollView scrollView = new ScrollView(this);  
        scrollView.addView(linearLayout);  
          
        for(int  i = 0; i < total; i++){  
          
        	final int j = i;
        	
            TextView textView = new TextView(this);  
            textView.setText(empresaProcessoBean.get(i).getEmpresa().getNomeFantasia());  
            
            textView.setOnClickListener(new View.OnClickListener() {
           
                @Override  
                public void onClick(View v) {  
                    
                	listaAmostras(j);
                	
                }
				 
           });
            
            linearLayout.addView(textView);
            
        }  
          
          
        Button botaoVoltar = new Button(this);  
        botaoVoltar.setText("Voltar");  
        linearLayout.addView(botaoVoltar);  
          
        botaoVoltar.setOnClickListener(new OnClickListener() {  
        
          
        @Override  
        public void onClick(View v) {  
          
            finish();  
              
              
        }  
              
    });  
          
        this.setContentView(scrollView);  
    }  
          
  
      
    public void listaAmostras(int j){  
        
    	try {
    		
    		
    		Amostra amostProBean = empresaProcessoBean.get(j);  
            
            Intent it = new Intent(this, ListaAmostraController.class);  
              
            it.putExtra("idAuxEmpresa", String.valueOf(amostProBean.getEmpresa().getIdAuxEmpresa()));  
            it.putExtra("idProcesso", amostProBean.getIdProcesso());  
            
            Log.i(CATEGORIA, "TESTE: " + j);
            
            Log.i(CATEGORIA, "idAuxEmpresa: " + String.valueOf(amostProBean.getEmpresa().getIdAuxEmpresa()));
            Log.i(CATEGORIA, "idProcesso: " +  amostProBean.getIdProcesso());
			
		} catch (Exception e) {
			
			
			Log.i(CATEGORIA, "ERRO METODO: " + e);
		}
    	
        
          
    }  
	
	
}

Resolvi

pura falta de atenção minha.

faltava o startActivity(it);

Valeu pela força irmão.

Você me ajudou muito.

O GUJ é quem agradeçe :smiley: