Diferentes elementos (dinámicos) de altura en GridLayoutManager
Tengo un RecyclerView y GridLayoutManager con 2 columnas. ¿Cómo puedo obligar a LayoutManager a estar de acuerdo con la plantilla en la primera captura de pantalla? Ahora tengo el resultado como en la 2 ª captura de pantalla.
Resultado de la necesidad:
- Activar la vista del reciclador
- El cambio de color de un solo dibujable en RecyclerView cambiará todos los dibujables
- Adaptador RecyclerView que toma valores erróneos
- NotifyItemChanged () hace que el RecyclerView desplace y salte a UP
- Cómo implementar load más recyclerview en android
Resultado actual:
- Recycler View Excepción grave: java.lang.ArrayIndexOutOfBoundsException
- RecyclerView altura del contenido
- Vista del reciclador que muestra un solo elemento
- Eliminar elementos de RecyclerView
- Sugerencias de diseño de material para listas con avatar, texto e icono
- ¿Por qué RecyclerView onBindViewHolder se llama una sola vez?
- Cómo implementar elementos expandibles con LinearLayoutManager (introducido con Android L)
GridLayoutManager
utilizará una cuadrícula, y puede establecer un cierto span, pero no diferentes alturas para diferentes celdas.
Lo que quieres es un StaggeredGridLayoutManager
. Esto sólo pondrá los elementos en la pantalla si encajan, dando lugar a su resultado necesario. También puede cambiar el comportamiento de reordenación, si lo desea, utilizando setGapStrategy
.
Es muy fácil. Tienes que agregar este gestor a RecycleView:
recyclerView.setLayoutManager(new StaggeredGridLayoutManager(mColumnCount, 1));
En mi caso es así:
Context context = view.getContext(); RecyclerView recyclerView = (RecyclerView) view; if (mColumnCount <= 1) { recyclerView.setLayoutManager(new LinearLayoutManager(context)); } else { recyclerView.setLayoutManager(new StaggeredGridLayoutManager(mColumnCount, 1)); } recyclerView.setAdapter(new MyItemRecyclerViewAdapter(DummyContent.ITEMS, mListener));