Establecer el intervalo de elementos en GridLayoutManager mediante SpanSizeLookup

Quiero implementar el diseño de cuadrícula con cabeceras 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 extensión de 1. ¿Cómo soluciono esto?

El problema era que la cabecera debe tener el tamaño de la extensión de 2, y el artículo regular debe tener tamaño de la extensión de 1. Así que las implementaciones correctas son:

 mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { switch(mAdapter.getItemViewType(position)){ case MyAdapter.TYPE_HEADER: return 2; case MyAdapter.TYPE_ITEM: return 1; default: return -1; } } }); 

Encabezado debe tener un intervalo igual a la cuenta de alcance de la lista completa.

 mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { switch(mAdapter.getItemViewType(position)){ case MyAdapter.TYPE_HEADER: return mLayoutManager.getSpanCount(); case MyAdapter.TYPE_ITEM: return 1; default: return -1; } } }); 

Respuesta a mi propia pregunta: Anula el getSpanSizeLookup () de la actividad después de configurar el adaptador.

  • RecyclerView scrollToPosition no dispara scrollListener
  • RecyclerView causa problemas al reciclar
  • Marshmallow (23) + RecyclerView (23.1.0) el desplazamiento desordena el contenido de arriba después de eliminar el elemento (notifyItemRemoved)
  • ¿No puede actualizar RecyclerView desde mi clase de modelo?
  • Paginación de Firebase android
  • Obtener las últimas publicaciones / datos de firebase con límite de 10 registros en android y poblar en Listview
  • Android RecyclerView con GridLayoutManager hace que el artículo abarque varias filas
  • ¿Cómo puedo añadir un RecyclerView horizontal dentro de un elemento de lista
  • Cómo crear efecto Parallax en Recycler Ver elemento en Scroll?
  • RecyclerView notifyItemInserted IllegalStateException
  • RecyclerView Adapter da error "La jerarquía del tipo RecycleAdapter es inconsistente"
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.