GridView con colSpan y rowSpan

Mi pregunta es hacer un GridView con soporte de rowSpan y colSpan. Lo busqué en el desbordamiento de la pila, etc hay algunas preguntas similares, pero no respuestas válidas.

Una forma de hacerlo podría estar implementando un adaptador ListView personalizado con diferentes tipos de fila. El uso de getItemViewType (int position) podría ayudar a optimizar para tal escenario, pero me temo que habrá tantos ViewTypes que harán ineficiente el reciclaje. Desde que quiero tener una red de 3 cols y algunos elementos que tienen rowSpans tan alto como 4 o 5.

Otra forma podría extender ListView y hacer que esas "tarjetas" tengan su propia recicladora. Quiero decir, si hay una fila como esta:

##..// ##**// ##==== ##++-- 

normalmente sería una sola fila para ListView, pero debería tener su propio childs y su propia jerarquía. Esta fila nunca sería reutilizada ya que es realmente único. Si usamos un reciclador personalizado, todas las tarjetas (como '#', '=' o '+' para el arte ascii arriba) deben ir a recintos de reciclaje específicos de sus tamaños (como 4×2 para el '#', 1×4 para el '=') y la posibilidad de reciclaje será mucho mayor.

Tal vez no sea una idea mejor usar el ListView e implementar una vista totalmente nueva con la ayuda de Scroller, usando su propio reciclador y posiciones absolutas para cada elemento determinado en el lado del servidor.

Le estoy preguntando esto, porque creo que usted puede llegar a una mejor idea o por lo menos me dan algunos consejos sobre lo difícil podría ser la aplicación de cada manera.

Código Java

 private LinearLayout addNewSpannedView(Integer resourceId, ViewGroup rootElement) { return (LinearLayout) ((ViewGroup) getLayoutInflater().inflate(resourceId, rootElement, true)).getChildAt(rootElement.getChildCount() - 1); } // set columnSpan depending on some logic (gridLayout is the layout to add the view's to -> in my case these are LinearLayouts) shape = addNewSpannedView(columnSpan == 1 ? R.layout.grid_ll_col_span_1 : R.layout.grid_ll_col_span_2, gridLayout); 

grid_ll_col_span_2.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="@dimen/shapeWidth" android:layout_height="wrap_content" android:layout_columnSpan="2"/> 
  • SwipeRefreshLayout interferir con setOnScrollListener
  • OnItemClickListener consume eventos onClickListener
  • ¿Cómo hacer una lista emergente como un hilandero sin el hilador en androide?
  • ¿Algún modo de saber cuándo una vista de lista se ha desplazado hacia arriba?
  • Cómo utilizar la funcionalidad de búsqueda en la vista de lista personalizada en Android
  • Android: vinculación de datos de una base de datos a un CheckBox en un ListView?
  • Reproducción de audio desde URI Dentro de ListView, pero Seekbar no se está actualizando en el elemento ListView de Android
  • Android: FastScrolling SectionIndexer getSections () se llama sólo una vez
  • Android: el diseño de ListView xml no muestra la imagen de fondo cuando se desplaza
  • Animar elementos de la lista en ListView
  • ¿Mi proceso de almacenamiento en caché de imágenes va a perder memoria?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.