Eu to literalmente preso nessa 4 parte por simplesmente nao conseguir entender essa coisa toda de RecyclerView, alguem me ajuda!
Eu to literalmente preso nessa 4 parte por simplesmente nao conseguir entender essa coisa toda de RecyclerView, alguem me ajuda!
Olá Kaio, tudo bem ?
Essa parte de recyclerView é realmente algo mais complexo, farei meu melhor para tentar te dar alguma luz.
1º Layout individual: Planejar o layout de cada item que será mostrado na lista, como foi apresentado no curso, nós temos um layout simples de 3 linhas mostrando nome, descrição e valor. Poderiamos colocar várias coisas e distribuir de formas diferentes, mas, por enquanto ficaremos com esse layout simples (no curso utilizamos o arquivo de layout produto_item.xml para padronizar o layout de cada item do recyclerView)
2º Criação do Adapter Nessa parte nós vamos criar uma classe "adaptadora" para nosso recyclerView, ou seja, ela vai basicamente dar um visual e funcionalidades ao nosso recyclerView. No curso temos a classe ListaProdutosAdapter que implementa a interface RecyclerView.Adapter<RecyclerView.ViewHolder>, não se preocupe se parecer muito código, vamos avançando aos poucos. Vamos falar dos métodos que essa implementação nos obriga a chamar.
onCreateViewHolder(): chamamos esse método sempre que precisa criar um novo ViewHolder (O ViewHolder fornece toda a funcionalidade para os itens da lista.). O método cria e inicializa o ViewHolder e a View associada, mas não preenche o conteúdo da visualização. O ViewHolder ainda não foi vinculado a dados específicos.
onBindViewHolder(): chamamos esse método para associar um ViewHolder aos dados. O método busca os dados e usa esses dados para preencher o layout que definimos anteriormente. Por exemplo, se a RecyclerView exibir uma lista de nomes, o método poderá encontrar o nome apropriado na lista e preencher o TextView do layout que configuramos. Toda vez que quiser alterar alguma coisa pontualmente, utilizamos esse método pois ele nos fornece também o parâmetro position
que nos retorna a posição que o item foi vinculado na lista.
getItemCount(): chamamos esse método para ver o tamanho do conjunto de dados. Por exemplo, em um app de lista de produtos, pode ser o número total de produtos. O RecyclerView usa essa função para determinar quando não há mais itens a serem exibidos.
(Essas informações foram adaptadas da própria documentação do android sobre recyclerView, caso queira acessar, basta clicar aqui)
Acredito que boa parte da dificuldade do recyclerView seja por conta do Adapter, é realmente bem complexo de acostumar com ele, por isso, ficarei à disposição para quaisquer outras dúvidas, se ficou qualquer lacuna na explicação por favor não exite em retornar aqui no fórum e perguntar :)
Forte abraço e bons estudos !!
Bom dia Matheus, sua explicação foi perfeita, achei que tinha entendido bem essas funções mas agora entendo ainda melhor. Somente tenho mais 1 duvida sobre a criação do nosso ViewHolder. o professor explica que ao mandarmos uma View para o onCreate, ele monta e faz o bind e retorna a mesma View, é isso? e retorna uma View generica mas que é melhor para o projeto possuir uma viewHolder especifica para melhorar funcionamento ou entendimento do codigo? (perdao se nao consegui explicar a duvida direito)
Fala Kaio, tudo bom ?
Vou tentar responder da maneira que entendi, aparentemente é sobre enviarmos uma view para o onCreateViewHolder e retornar a mesma View, correto ? (Se não for isso você me diz)
Levando isso em consideração, nós podemos abstrair um pouco a ideia e pensar que o onCreate "cria" um layout padrão que colocamos nele e envia para o onBind que coloca as informações necessárias para aquela View ser parte de uma lista, como por exemplos, seus dados específicos e sua posição.
Fico à disposição para responder suas dúvidas. Bons estudos!!
A minha duvida é nessa parte aqui:
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
fun vincula(produto: Produto) {
}
}
pq criar uma ViewHolder especifica para o projeto? para dar uma especificada? "Nesta lista só sera apresentado instancias de Produtos"? Agradeço a resposta desde já
Olá de novo Kaio, como vai?
No caso de especificarmos esse viewHolder em um classe seria justamente o motivo que você comentou, especificar no nosso caso uma ListaProdutosViewHolder, mas, como só possuímos um caso de aplicação nós usamos o nome viewHolder mesmo.
Um possível caso de uso para mais viewHolders seria por exemplo, nos índices impares do recyclerView eu quero exibir uma imagem com dois textos e nos índices pares somente 1 texto, para isso, uma possível solução seria criar duas classes de viewHolder, que ai sim nós mudariamos os nomes para algo mais apropriado.
Se ficar qualquer dúvida só falar aqui. Forte abraço e bons estudos !!
Perfeito Matheus, Muito Obrigado