Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

ConvertView não está limpando o ImageView (Outras fotos aparecem em contatos sem fotos).

//Impede a cariação de inumeras viws mantendo uma quantidade e apenas alterando o conteudo para melhor performace View view = convertView; if (view == null) { view = inflater.inflate(R.layout.list_item, parent, false); }

5 respostas

Oi Silvânio, tudo bem ?

Você está verificando se o aluno possui foto ?

Disso você poderia tomar uma decisão, se ele tiver coloca a foto dele, caso contrário uma foto default.

Qualquer coisa, estou a disposição !

Abraços :D

Já possui a foto default conforme no tutorial, o que parece é que quando ele reutiliza a view durante a rolagem dos registros e substitui os dados mas não substitui a foto que era de um outro registro.

Silvanio, posta o código inteiro do método getView da sua classe AlunoAdapter.

GetView

@Override
    public View getView(int position, View convertView, ViewGroup parent) {

        //Instanciando o aluno da posição informada
        Aluno aluno = alunos.get(position);

        //Inflando o XML de Layout da lista para acessar os campos e adicionar os dados
        LayoutInflater inflater = LayoutInflater.from(context);

        //Impede a cariação de inumeras viws mantendo uma quantidade e apenas alterando o conteudo para melhor performace
        View view = convertView;
        if (view == null) {
             view = inflater.inflate(R.layout.list_item, parent, false);
        }

        TextView campoNome = (TextView) view.findViewById(R.id.item_nome);
        campoNome.setText(aluno.getNome());

        TextView campoTelefone = (TextView) view.findViewById(R.id.item_telefone);
        campoTelefone.setText(aluno.getTelefone());

        ImageView campoFoto = (ImageView) view.findViewById(R.id.item_foto);
        String caminhoFoto = aluno.getCaminhoFoto();

        if (caminhoFoto != null) {

            Bitmap bitmap = BitmapFactory.decodeFile(caminhoFoto);
            Bitmap bitmapReduzido = Bitmap.createScaledBitmap(bitmap, 300, 300, true); //Reduz a rezolução do Bitmap e filtra para garantir a qualidade
            campoFoto.setImageBitmap(bitmapReduzido);
            campoFoto.setScaleType(ImageView.ScaleType.FIT_XY); //Faz com que ImageView ajuste a imagem

        }

        return view;

    }
solução!

Oi Silvanio,

Você precisa fazer um else nessa condição :

        if (caminhoFoto != null) {

            Bitmap bitmap = BitmapFactory.decodeFile(caminhoFoto);
            Bitmap bitmapReduzido = Bitmap.createScaledBitmap(bitmap, 300, 300, true); //Reduz a rezolução do Bitmap e filtra para garantir a qualidade
            campoFoto.setImageBitmap(bitmapReduzido);
            campoFoto.setScaleType(ImageView.ScaleType.FIT_XY); //Faz com que ImageView ajuste a imagem

        }

Pois se o caminho for nulo, você deixa pode colocar uma imagem default.

Abraços :)