Problem in organizing the data of a ListView - BaseAdapter

0

I have a problem when organizing the personal data of an external MySql database. Type, I created an InfoPessoalAdapter class inheriting from BaseAdapter where I get name, address, neighborhood, zip, phone and comments. I played in the listview as follows:

List<InfoPessoais> dadosPessoais = new ArrayList<InfoPessoais>();
    InfoPessoais ip = new InfoPessoais();

    for (String k : dados) {
        ip = new InfoPessoais();
        ip.setNome(k);
        ip.setEndereco(k);
        ip.setBairro(k);
        ip.setCep(k);
        ip.setTelefone(k);
        ip.setObs(k);
        dadosPessoais.add(ip);
    }
    lvInformacoesPessoais.setAdapter(new InfoPessoaisAdapter(this, dadosPessoais));

The problem is that when it shows on the screen of my device, it shows the name repeatedly for all fields, hence the next field repeats again and so on ... it looks all wrong as in the image below: / p>

data:

try{respostaRetornada=ConexaoHttpClient.executaHttpPost(url,parametrosPost);Stringresposta=respostaRetornada.toString();resposta=resposta.replaceAll("\s+", "");
        Log.i("Informações", "Informações: "+resposta);

        char separador = '#';
        int contadados = 0;

        for (int i=0; i < resposta.length(); i++){
            if (separador == resposta.charAt(i)){
                contadados++;
                dados = new String[contadados];
            }
        }

        char caracterLido = resposta.charAt(0);
        String nome = "";

        for (int i=0; caracterLido != '^'; i++){
            caracterLido = resposta.charAt(i);
            Log.i("Chars", "Chars do Paciente"+caracterLido);

            if (caracterLido != '#'){
                if (caracterLido == '*'){
                    nome = nome + " ";
                }else
                nome+= (char) caracterLido;

            }else{
                Log.i("Nome", "Nome: "+nome);
                dados[posicao] =""+ nome;
                Log.i("Nome posição ["+posicao+"]", ""+dados[posicao]);
                posicao = posicao + 1;
                nome = "";
            }
        }
        Log.i("Fim", "Fim do for");

    }catch(Exception erro){
        Toast.makeText(getBaseContext(), "Erro: "+erro, Toast.LENGTH_LONG).show();
    }
    
asked by anonymous 12.11.2014 / 16:52

1 answer

1

Instead of making the following code:

for (String k : dados) {
    ip = new InfoPessoais();
    ip.setNome(k);
    ip.setEndereco(k);
    ip.setBairro(k);
    ip.setCep(k);
    ip.setTelefone(k);
    ip.setObs(k);
    dadosPessoais.add(ip);
}

Do the following:

int i = 0;
while(i < dados.length)
{
    ip = new InfoPessoais();
    ip.setNome(dados[i++]);
    ip.setEndereco(dados[i++]);
    ip.setBairro(dados[i++]);
    ip.setCep(dados[i++]);
    ip.setTelefone(dados[i++]);
    ip.setObs(dados[i++]);
    dadosPessoais.add(ip);
}

This is very unfeasible to do, but for now to solve your problem, that is enough.

    
12.11.2014 / 17:47