Olá. Estou com dificuldade para compreender/solucionar um problema. Como o commit de resolução é diferente do projeto que fazemos devido os desafios anteriores, nem fazendo a leitura consigo sanar minha dúvida. Em resumo, com o clique no produto dentro do recyclerView na TodosProdutosActivity, nada acontece. Realizando o cliqueLongoDeletar (de um outro desafio) o app se comporta como o esperado, mas não como o descrito/codificado
Em detalhes, neste ponto do commit na Classe TodosProdutosActivity:
private fun criaAdapterDeProdutosComCabecalho(produtosUsuario: Map.Entry<String?, List<Produto>>) =
listOf(
CabecalhoAdapter(this, listOf(produtosUsuario.key)),
ListaProdutosAdapter(
this,
produtosUsuario.value
) { produtoClicado ->
vaiPara(DetalhesProdutoActivity::class.java) {
putExtra(CHAVE_PRODUTO_ID, produtoClicado.id)
}
}
)
Supondo que o adapter utilizado ListaProdutosAdapter possua apenas uma única HoF quandoClicaNoItem como no adapter do commit, funciona normalmente, porém, com os desafios feitos, temos outros comportamentos como longClick para editar e longClick para remover. SE definido que a quandoClicaNoItem é a última a ser declarada, funciona normalmente, porém, caso não seja, ao clicar no produto temos o feedback no logcat que foi clicado, mas nada acontece. E, caso façamos o que a última HoF declarada descreve (no meu caso, o cliqueLongoDeletar), o código funciona como o esperado (abrir a tela de detalhes), mas não exatamente como descrito.
Como solucionar isso? Fazendo a chamada do método manualmente? Não consegui utilizar o método do adapter isoladamente como em outras classes.
O meu adapter está declarado da seguinte forma:
class ListaProdutosUsuarioAdapter(
private val context: Context,
produtos: List<Produto> = emptyList(),
var quandoCliqueLongoNoItem_Editar: (produto: Produto) -> Unit = {},
var quandoCliqueLongoNoItem_Deletar: (produto: Produto) -> Unit = {},
var quandoClicaNoItem: (produto: Produto) -> Unit = {}
) : RecyclerView.Adapter<ListaProdutosUsuarioAdapter.ViewHolder>() {