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.