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

Incompatibilidade de tipos na AsyncTask

Segue a minha implementação da AsyncTask:

public class BuscaTelefonesAlunoTask extends AsyncTask <Void, Void, List<Telefone>> {

    private final TelefoneDao telefoneDao;
    private final Aluno aluno;
    private final OnBuscaTelefonesListener listener;

    public BuscaTelefonesAlunoTask(TelefoneDao telefoneDao, Aluno aluno, OnBuscaTelefonesListener listener) {
        this.telefoneDao = telefoneDao;
        this.aluno = aluno;
        this.listener = listener;
    }

    @Override
    protected List<Telefone> doInBackground(Void... voids) {
        return telefoneDao.buscaTelefonesAluno(aluno.getId());
    }

    @Override
    protected void onPostExecute(List<Telefone> telefones) {
        super.onPostExecute(telefones);
        listener.onBusca(telefones);
    }

    public interface OnBuscaTelefonesListener{
        void onBusca(List<Telefone> telefones);
    }
}

O trecho da activity com a chamada da task (implementação do listener vazia propositalmente, neste momento):

        telefones = new BuscaTelefonesAlunoTask(telefoneDao, aluno, new BuscaTelefonesAlunoTask.OnBuscaTelefonesListener() {
            @Override
            public void onBusca(List<Telefone> telefones) {

            }
        }).execute();

Erro no build:

error: incompatible types: AsyncTask<Void,Void,List<Telefone>> cannot be converted to List<Telefone>
        }).execute();
1 resposta
solução!

Mauricio de boa ?

Cara você precisa atribuir o valor da lista de telefones dentro do seu listener...

//vc ta fazendo isso
        telefones = new BuscaTelefonesAlunoTask(telefoneDao, aluno, new BuscaTelefonesAlunoTask.OnBuscaTelefonesListener() {
            @Override
            public void onBusca(List<Telefone> telefones) {

            }
        }).execute();

// devia ser assim

new BuscaTelefonesAlunoTask(telefoneDao, aluno, new BuscaTelefonesAlunoTask.OnBuscaTelefonesListener() {
            @Override
            public void onBusca(List<Telefone> telefonesBuscados) {
telefones = telefonesBuscados;
            }
        }).execute();

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