Gente, boa!
Está acontecendo um mistério cabeludo que não tô conseguindo entender o pq isso tá acontecendo.
Tenho a Classe Professor com Métodos (Ambos retornando uma String):
public class Professor{
public String imprimeProfDiscs(Context context){
System.out.println("j");
banco = new BancoDeDados(context);// INSTÂNCIAS DO BANCO DE DADOS
dadosPessoais = banco.consultarDadosPessoaisPeloCpfBanco(getFkDadosPessoais());// CONSULTA DO DadosPessoais SEGUNDOA FK DO PROFESSOR QUE É O CPF DO DadosPessoais
endereco = banco.consultarEnderecoPeloIdBanco(getFkEndereco());// CONSULTA DO Endereco
if(dadosPessoais == null){
return "CONTA EXCLUÍDA\n\nREMOVA ELA DA LISTA!";
}
else{
if(endereco == null){
return dadosPessoais.imprimeDadosPessoais() + "\n\nSEM ENDEREÇO CADASTRADO.\nFAVOR ATUALIZAR OS DADOS DO PROFESSOR!";
}
else{
if(disciplinas(context) == null){
return dadosPessoais.imprimeDadosPessoais() + "\n\n" + endereco.imprimeEndereco() + "\n\nSEM DISCIPLINA CADASTRADA.\nFAVOR ATUALIZAR OS DADOS DO PROFESSOR!";
}
else{
return dadosPessoais.imprimeDadosPessoais() + "\n\n" + endereco.imprimeEndereco() + "\n\nDISCIPLINAS:\n" + disciplinas(context);
}
}
}
}
/**
<MÉTODO QUE LISTA AS DISCIPLINAS QUE ESTE PROFESSOR MINISTRA
*/
public String disciplinas(Context context){
System.out.println("k");
banco = new BancoDeDados(context);// INSTÂNCIAS DO BANCO DE DADOS
StringBuilder stringBuilder = new StringBuilder();// INSTÂNCIA DO StringBuilder
ArrayList<RelacionalProfDisc> arrayListRelacionalProfDisc = new ArrayList<>();// INSTÂNCIA DO ArrayList DE arrayListarrayListRelacionalProfDisc
Cursor resultado = banco.listarRelacionalProfDiscBanco();// lISTA DE TODAS AS RELACIONAIS ENTRE O PROFESSOR E A DISCIPLINA
// SE O getCount() FOR IGUAL A 0, É POR QUE A LISTA ESTÁ VAZIA. ENTÃO O MÉTOOD disciplinas() RETORNA null
if(resultado.getCount() == 0){
return nomeDiscConcat = null;// A LISTA ESTÁ VAZIA
}
else{
while(resultado.moveToNext()){
String idInterProfDisc = resultado.getString(resultado.getColumnIndex("ID_RELACIONAL_PROF_DISC"));
String fkProf = resultado.getString(resultado.getColumnIndex("FK_RELACIONAL_PROF"));
String fkDisc = resultado.getString(resultado.getColumnIndex("FK_RELACIONAL_DISC"));
relacionalProfDisc = new RelacionalProfDisc(idInterProfDisc, fkProf, fkDisc);// INSTÂNCIA DO InterProfDisc
arrayListRelacionalProfDisc.add(relacionalProfDisc);// INSERÇÃO DO InterProfDisc NO ARRAYLISTA arrayListInterProfDisc
}
int cont = 1;// Contador de Disciplinas. Ele tem que ser declarado fora do for e implementado dentro do if do for
/**<O ARRAYLIST arrayListRelacionalProfDisc É VARRIDO E EM CADA RODADA QUE O for DÁ, LHE É ATRIBUÍDO UM relacionalProfDisc SEGUNDO O ÍNDICE i*/
for(int i = 0; i < arrayListRelacionalProfDisc.size(); i++){
relacionalProfDisc = arrayListRelacionalProfDisc.get(i);
if(relacionalProfDisc.getFkProfessor().equals(getIdProfessor())){
disciplina = banco.consultarDisciplinaPeloIdBanco(relacionalProfDisc.getFkDisciplina());
stringBuilder.append(cont + " - " + disciplina.getNomeDisciplina() + "\n");// stringBuilder EMPILHA OS VALORES: cont QUE CONTA QUANTAS VEZES O for É RODADO, UM TRAÇO "-", O NOME DA DISCIPLINA E UM \n QUE É A PRÓXIMA LINHA
nomeDiscConcat = stringBuilder.toString();// A VARIÁVEL nomeDiscConcat RECEBE O VALOR QUE ESTÁ EM stringBuilder CONCATENADO NUMA STRING
cont++;// Incremento do Contador de Disciplinas. A cada giro do for ele é incrementado, recebendo a soma de +1
System.out.println("cont++:::::"+cont);
System.out.println("w:::"+disciplina.getNomeDisciplina());
}
else{
System.out.println("y:::"+disciplina.getNomeDisciplina());
}
}
System.out.println("z");
}
return nomeDiscConcat;
}
}
O método disciplinas(Context context)
é chamado dentro do método imprimeProfDiscs(Context context)
Em outra classe, professorConsultado()
, chamo o método imprimeProfDiscs(Context context)
para que seu resultado seja exibido no TextView tvDadosCadastrais.setText(professor.imprimeProfDiscs(ProfessorConsultAtualRemo.this))
O resultado que tenho nos System.out.println são esses:
I/System.out: j
I/System.out: k
I/System.out: cont++:::::2
I/System.out: w:::11111
I/System.out: cont++:::::3
I/System.out: w:::33333
I/System.out: cont++:::::4
I/System.out: w:::55555
I/System.out: cont++:::::5
I/System.out: w:::77777
I/System.out: cont++:::::6
I/System.out: w:::99999
I/System.out: z
I/System.out: k
I/System.out: cont++:::::2
I/System.out: w:::11111
I/System.out: cont++:::::3
I/System.out: w:::33333
I/System.out: cont++:::::4
I/System.out: w:::55555
I/System.out: cont++:::::5
I/System.out: w:::77777
I/System.out: cont++:::::6
I/System.out: w:::99999
I/System.out: z
Não sei por que ele tá rodando o for duas vezes!
Ele roda o j uma vez, quando o método imprimeProfDiscs(Context context)
é chamado, mas roda duas vezes no método disciplinas(Context context)
, sendo que não tem nada que faz o for rodar duas vezes, pelo menos não estou vendo.
Alguém?
Obg!