0

RecyclerView e Adapter

#Kotlin #Java #Android
Maria Santana
Maria Santana

Olá devs!! antes de colocar a mão no código, é importante saber alguns conceitos.


O RecyclerView é usado normalmente para exibir uma lista, que como o nome já sugere, recicla a view utilizada para exibir cada elemento. A lista pode ser exibida de diferentes formas, como na imagem abaixo:


  • LinearLayoutManager organiza os itens em uma lista unidimensional.
  • GridLayoutManager organiza todos os itens em uma grade bidimensional:
  • StaggeredGridLayoutManager é semelhante a GridLayoutManager, mas não requer que os itens em uma linha tenham a mesma altura. O resultado é que os itens em uma linha ou coluna podem acabar sendo deslocados uns dos outros.



O Adapter é a peça que conectará nossos dados ao nosso RecyclerView e determinará os ViewHolder que precisarão ser usados ​​para exibir esses dados.

Na imagem a seguir vai ficar mais fácil entender o conceito do Adapter:


Quanto mais complexo o layout da view que RecyclerView vai receber, mais recomendado o uso do Adapter.

Mais uma imagem para facilitar a compreensão:


Para ser possível utilizar o Adapter, você precisa criar uma classe Adapter que irá estender RecyclerView.Adapter :

public class EasyAdapter extends RecyclerView.Adapter {
    …
}


Assim que você estender a RecyclerView.Adapter, precisará implementar alguns métodos obrigatórios:


onCreateViewHolder(): Método reponsável por criar cada item visual na nossa tela. Criação de layout.

exemplo:

@Override
public RecyclerView.ViewHolder onCreateViewHolder(final ViewGroup parent, final int viewType) {
    final View view = LayoutInflater.from(parent.getContext()).inflate(viewType, parent, false);
    return new EasyViewHolder(view);
}


onBindViewHolder(): Método responsável por rodar em cada item do seu Array, obter o valor e preencher na tela. Quando o adapter está fazendo a manipulação da sua lista para exibir na tela, a cada item que vai sendo mostrado passa por esse método.

exemplo:

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
    ((EasyViewHolder) holder).bindData(models.get(position));
}


getItemCount(): Método responsável por obter o tamanho da lista.

exemplo:

@Override
public int getItemCount() {
    return models.size();
}


Depois disso, você precisa criar um ViewHolder, que é o próprio objeto que representa cada item de nossa lista e será usado para exibi-lo. 

public class EasyViewHolder extends RecyclerView.ViewHolder {

    private TextView easyTextView;

    public EasyViewHolder(final View itemView) {
        super(itemView);
        easyTextView = (TextView) itemView.findViewById(R.id.easy_text);
    }

Nele, você vai fazer referência acada item do layout que a RecyclerView está usando. No exemplo acima, está fazendo referência a um item do layout que é um TextView de id = easy_text.


Agora só precisa fazer referência ao RecyclerView e ao Adapter, na MainActivity:


cria a instancia:

private val recyclerView: RecyclerView by lazy { findViewById.RecyclerView(R.id.recyclerView) }

private val adapter = EasyAdapter()


e junta os dois:

private fun bindViews() {
    recyclerView.adapter = adapter

    //Informar com que layout os itens serão exibidos
    recyclerView.layoutManager = LinearLayoutManager(this)
}


Os itens da lista, serão exibidos mais ou menos assim, com o app rodando:


Além de está presente em diversos apps de mercado, o RecyclerView é um componente poderoso, você pode usá-lo de várias formas, com diferentes layouts, e de diferentes maneiras(horizontal ou vertical). Junto com o Adapter permite que seu app tenha um desempenho bem melhor e fique mais legível e estruturado.


Sugiro dar uma lida com calma na documentação do android e praticar, vou deixar alguns links que podem ser úteis:

Documentação android

Exemplo prático

Mais informações


Onde me achar:

Linkedin

GitHub

0
1

Comentários (0)

Mobile Developer | Kotlin | Java

Brasil