Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao executar o projeto

Ao iniciar carregar o app no Android ele fecha por erro. Ele está dando null exception no momento de pegar as views pelo id no getView.

@Override
    public View getView(int posicao, View view, ViewGroup viewGroup) {
        View viewCriada = LayoutInflater
                .from(context)
                .inflate(R.layout.item_aluno, viewGroup, false);

        Aluno aluno = alunos.get(posicao);

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

        TextView tel = view.findViewById(R.id.item_aluno_telefone);
        tel.setText(aluno.getTelefone());

        return viewCriada;
    }
    

Aqui o erro que estoura:

FATAL EXCEPTION: main Process: com.example.agenda, PID: 17177 java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference at com.example.agenda.ui.adapter.ListaAlunosAdapter.getView(ListaAlunosAdapter.java:50)

Como corrigir o problema?

1 resposta
solução!

E aí! Beleza? Então, pelo que eu vi, o erro tá rolando nessa linha:

TextView tel = view.findViewById(R.id.item_aluno_telefone);

O erro java.lang.NullPointerException está dizendo que o objeto view tá nulo quando você tenta chamar o método findViewById(). Isso acontece porque você tá usando o view antigo (que pode ser nulo) em vez do viewCriada que você acabou de inflar.

Mude a linha problemática para usar viewCriada em vez de view.

Troque:

TextView tel = view.findViewById(R.id.item_aluno_telefone);

Por:

TextView tel = viewCriada.findViewById(R.id.item_aluno_telefone);

Quando você está usando o getView(), o Android tenta reutilizar as views já criadas (por isso o view é passado como argumento). No entanto, você está inflando uma nova view toda vez e não está usando a view reutilizada (view) para encontrar suas subviews. Se você quiser aproveitar melhor a reutilização de views, pode ajustar seu código, mas para corrigir o erro imediato, a mudança acima deve resolver!

Espero que isso ajude a resolver o problema!

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