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

context

Eu quero que analisem esses dois códigos:

class ListaProdutosAdapter(
    private val context: Context, // aqui estou criando uma variável context para passar no LayoutInflater
    produtos: List<Produtos> = emptyList(),
    var onClickItem: (produtos: Produtos) -> Unit = {}
) : RecyclerView.Adapter<ListaProdutosAdapter.ViewHolder>() {

    private val produtos = produtos.toMutableList()

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val binding = ProdutoItemBinding
            .inflate(
                LayoutInflater
                    .from(context), // variavel context
                parent,
                false
            )
        return ViewHolder(binding)

    }

Nesse primeiro caso, eu estou pedindo la na main activity para que quando eu inicialize o meu adapter ele peça um contexto e eu tenho que informar como argumento o (this).

class ListaProdutosAdapter(
    produtos: List<Produtos> = emptyList(),
    var onClickItem: (produtos: Produtos) -> Unit = {}
) : RecyclerView.Adapter<ListaProdutosAdapter.ViewHolder>() {

    private val produtos = produtos.toMutableList()

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val binding = ProdutoItemBinding
            .inflate(
                LayoutInflater
                    .from(parent.context),  // aqui estou usando o context do parent, que seria a ViewGroup indicada como parametro
                parent,
                false
            )
        return ViewHolder(binding)

    }

Nesse segundo caso, eu não indico no parâmetro do construtor do adapter a necessidade de indicar um context, já q estou usando o do parent naquela ocasião e com isso eu não preciso na main activity escrever o (this) quando inicializo o meu adapter. Assim fica mais "limpo" a main activity e não deu "pau" no código. Isso é maléfico de alguma forma? Ou poderia dar problema de alguma forma lá na frente, porque o codigo com o segundo caso está rodando tranquilamente.

1 resposta
solução!

Esse segundo caso é o mais indicado, pq você acaba não gerando acoplamento com a tela externa e fora que utiliza um contexto valido, além disso o código fica mais clean mesmo