Imprimir este capítuloImprimir este capítulo

Livro 3 - Projeto Agenda de Contatos - Parte 2

5. Manipulação de Listas

5.3. Classe ItemDivider

A classe ItemDivider é utilizada no desenho da RecyclerView. Sua definição é simples e genérica. Ela cria um desenho de uma linha reta para separar os itens da lista.

public class ItemDivider extends RecyclerView.ItemDecoration{
private final Drawable divider;

// o construtor carrega a divisória de itens de lista interna
ItemDivider (Context context) {
int[] attrs = {android.R.attr.listDivider};
divider = context.obtainStyledAttributes(attrs).getDrawable(0);
}

// desenha as divisórias de itens de lista na RecylerView

@Override
public void onDrawOver(Canvas c, RecyclerView parent,
RecyclerView.State state) {
super.onDrawOver(c, parent, state);

// calcula as coordenadas x esquerda/direita de todas as divisórias
int left = parent.getPaddingLeft();
int right = parent.getWidth() - parent.getPaddingRight();

// para todos os itens, menos o último, desenha uma linha abaixo dele
for (int i = 0; i < parent.getChildCount() - 1; i++) {
View item = parent.getChildAt(i);

// calcula as coodenadas y superior/inferior da divisória atual
int top = item.getBottom() + ((RecyclerView.LayoutParams)
item.getLayoutParams()).bottomMargin;
int bottom = top + divider.getIntrinsicHeight();

// desenha a divisória com os limites calculados
divider.setBounds(left, top, right, bottom);
divider.draw(c);
}
}
}