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.