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

OnItemClickListener genérico

Na implementação do método onItemClick, o mesmo está recebendo um objeto Nota, porém se eu implementar uma outra tela do meu app com outra lista de um tipo de objeto diferente terei que criar uma novo listener que receba o objeto que preciso, então pensei em duas possíveis soluções:

1: fazer onItemClick receber um Object e na implementação dele fazer o cast para o objeto desejado;

2: fazer onItemClick receber a posição do item clicado, criar um método publico dentro do adapter que recebe uma posição e retorna um item de acordo com a posição recebida.

dessas duas possibilidades qual seria a melhor opção? ou existe outra técnica melhor para que eu não precise ficar criando um monte de listeners?

2 respostas
solução!

Oi Valteir, tudo bem?

Bem observado, nesses casos podemos criar um listener genérico mesmo, não precisa lidar com Object por causa do generics, então ficaria da seguinte maneira:

interface OnItemClickListener <T> {

    void onItemClick(T item);

}

Então você indica que o adapter vai ter o listener com o tipo Nota:

class Adapter {

    private OnItemClickListener<Nota> listener;

    //restante do código
}

E pode implementar da seguinte maneira:

new OnItemClickListener<Nota>() {
    @Override
    public void onItemClick(Nota item) {

    }
};

Com essa implementação você pode usar o listener com qualquer tipo de classe.

[]s

Show! Muito obrigado pela atenção Alex

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