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

Aula 3 (LayoutInflater) - erro com a classe R

O meu método public view getView esta com problemas para recuperar a classe R do java. Eu ja tentei dar Clean e Build manual no projeto, mas ate agora nada. Como resolvo isso ? O método é esse:

public View getView(int position, View convertView, ViewGroup parent) {
        Aluno aluno = alunos.get(position);

        LayoutInflater inflater = activity.getLayoutInflater();
        View linha = inflater.inflate(R.layout.item, null);

        TextView nome = (TextView) linha.findViewById(R.id.nome);
        nome.setText(aluno.getNome());

        ImageView foto = (ImageView) linha.findViewById(R.id.foto);

        if (aluno.getCaminhoFOTO() != null) {

            Bitmap imagem = BitmapFactory.decodeFile(aluno.getCaminhoFOTO());
            Bitmap imagemReduzida = Bitmap.createScaledBitmap(imagem, 100, 100, true);
            foto.setImageBitmap(imagemReduzida);
        }else {
            foto.setImageResource(R.drawable.ic_delete);
        }
        return linha;
    }
5 respostas

Quando o Android não acha a classe R, geralmente por causa de algum problema em um dos seus XMLs.

Dê uma conferida nos seus XMLs se você está fechando todas as tags e coisas do tipo.

Abraço.

package br.com.caelum.cadastro.adapter;

import java.util.List;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import br.com.caelum.cadastro.modelo.Aluno;

public class AlunoAdapter extends BaseAdapter {

    private List<Aluno> alunos;
    private final Activity activity;

    public AlunoAdapter(Activity activity, List<Aluno> alunos) {
        this.alunos = alunos;
        this.activity = activity;

    }

    //INFORMAR AO ANDROID A QTD DE ITENS
    @Override
    public int getCount() {
        return alunos.size();
    }

    //PARA CADA LINHA É EXUBIDA, ELE VERA QUAL OBJETO ENTRARA
    @Override
    public Object getItem(int position) {
        return alunos.get(position);
    }

    //PARA CADA ITEM DA LISTA, É PEDIDO UM ID
    @Override
    public long getItemId(int position) {
        return alunos.get(position).getId();
    }

    //METODO QUE RETORNA A VIEW QUE VAI PREENCHER OS ITENS DA LISTA
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Aluno aluno = alunos.get(position);

        LayoutInflater inflater = activity.getLayoutInflater();
        View linha = activity.getLayoutInflater().inflate(R.layout.item, null);

        TextView nome = (TextView) linha.findViewById(R.id.nome);
        nome.setText(aluno.getNome());

        ImageView foto = (ImageView) linha.findViewById(R.id.foto);

        if (aluno.getCaminhoFoto() != null) {

            Bitmap imagem = BitmapFactory .decodeFile(aluno.getCaminhoFoto());
            Bitmap imagemReduzida = Bitmap.createScaledBitmap(imagem, 100, 100, true);
            foto.setImageBitmap(imagemReduzida);

        }else {
            foto.setImageDrawable(R.drawable.ic_no_image);
        }
        return linha;
    }

}

Eu olhei na aula de novo, dessa vez fiz igualzinho como estava la, porem ainda continua com erro. E nos meus XMLs esta tudo ok

solução!

Essa sua classe está tudo ok mesmo. Você está importando a classe R do nosso projeto ou do android? Lembre-se que essa classe deve ser do nosso projeto.

É só nessa classe que você está com problemas para encontrar a classe R?

Deu certo! Era pra importar a classe R do nosso projeto... Eu estava importando a do Android! Obrigado

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software