Quiero implementar un diseño similar a una cuadrícula con encabezados de sección. Piense en https://github.com/TonicArtos/StickyGridHeaders
Qué hago ahora:
mRecyclerView = (RecyclerView) view.findViewById(R.id.grid);
mLayoutManager = new GridLayoutManager(getActivity(), 2);
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch(mAdapter.getItemViewType(position)){
case MyAdapter.TYPE_HEADER:
return 1;
case MyAdapter.TYPE_ITEM:
return 2;
default:
return -1;
}
}
});
mRecyclerView.setLayoutManager(mLayoutManager);
Ahora, tanto los elementos normales como los encabezados tienen un tamaño de tramo de 1. ¿Cómo soluciono esto?
mAdapter.getItemViewType(position)
devuelve el valor correcto?Respuestas:
El problema era que el encabezado debería tener un tamaño de tramo de 2 y el elemento normal debería tener un tamaño de tramo de 1. Así que las implementaciones correctas son:
fuente
El encabezado debe tener un intervalo igual al recuento de intervalos de toda la lista.
fuente
Respuesta a mi propia pregunta: Anule getSpanSizeLookup () de la Actividad después de configurar el adaptador.
fuente