Cómo saltar la primera fila en RecyclerView elemento de decoración para GridLayout?

Estoy utilizando esta clase ItemDecoration para GridLayout -> https://github.com/devunwired/recyclerview-playground/blob/master/app/src/main/java/com/example/android/recyclerplayground/GridDividerDecoration.java

Pero el problema es que mi primera fila en GridLayout es una imagen y establezco el span a 2.

Puede ver mi pantalla como se muestra a continuación:

Captura de pantalla

Cómo omitir la primera fila para que ItemDecoration no dibujar en la imagen?

A continuación se muestra el código que estoy usando para agregar la ItemDecoration: –

mRecyclerView.setHasFixedSize(true); mLayoutManager = new GridLayoutManager(getActivity(), 2); mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { return position == 0 ? 2 : 1; } }); mRecyclerView.setLayoutManager(mLayoutManager); mAdapter.setHighlightsCallbacks(this); mRecyclerView.setAdapter(mAdapter); mRecyclerView.setItemAnimator(new DefaultItemAnimator()); mRecyclerView.addItemDecoration(new GridDividerDecoration(getActivity())); 

También modifiqué el método drawHorizontal en la clase GridDividerDecoration para dibujar sólo si imageview es nulo pero sigue sin funcionar:

 public void drawHorizontal(Canvas c, RecyclerView parent) { final int top = parent.getPaddingTop(); final int bottom = parent.getHeight() - parent.getPaddingBottom(); final int childCount = parent.getChildCount(); for (int i = 0; i < childCount; i++) { final View child = parent.getChildAt(i); if (child.findViewById(R.id.home_imgHeader) == null) { final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); final int left = child.getRight() + params.rightMargin + mInsets; final int right = left + mDivider.getIntrinsicWidth(); mDivider.setBounds(left, top, right, bottom); mDivider.draw(c); } } } 

¿Alguna ayuda?

One Solution collect form web for “Cómo saltar la primera fila en RecyclerView elemento de decoración para GridLayout?”

Suponiendo que sus elementos no tienen fondos sólidos (es decir, el color blanco es del padre), la solución más simple sería mover el código de onDrawOver() a onDraw() . Esto dibujará las líneas de cuadrícula debajo de su contenido de vista de niño y se oculta bajo la imagen de encabezado.

De lo contrario, el código que está utilizando supone que las líneas de cuadrícula siempre se dibujan en la parte superior de la vista en drawHorizontal() (observe que top es un valor que nunca cambia). Tendría que modificar esa función para dar cuenta de la parte inferior del primer elemento y empezar a dibujar allí. Algo como:

 public void drawHorizontal(Canvas c, RecyclerView parent) { final View topView = parent.findViewHolderForAdapterPosition(0); int viewBottom = -1; if (topView != null) { final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams(); viewBottom = child.getBottom() + params.bottomMargin + mInsets; } final int top = viewBottom > parent.getPaddingTop() ? viewBottom : parent.getPaddingTop(); final int bottom = parent.getHeight() - parent.getPaddingBottom(); … /* Remaining Code */ } 
  • Elemento RecyclerView que no muestra ondulaciones / retroalimentación táctil cuando el elemento tiene una casilla de verificación
  • Alternativa a registerDataSetObserver () en RecyclerView
  • RecyclerView ocupa todo el espacio de la pantalla
  • RecyclerView in DialogFragment -> arrastre y suelte (swap) retrasos de animación
  • RecyclerView GridLayoutManager con el encabezado de ancho completo
  • No se puede colocar la vista debajo de RecyclerView
  • Alternativa de PointToPosition para RecycleView
  • RecycleView se bloquea en Fragmento porque LayoutManager es NULL
  • Selección de un valor RadioButton y desplazamiento hacia atrás eliminando el seleccionado en RecyclerView
  • SwipeRefreshLayout obstruye el desplazamiento de recycleview en el momento de desplazarse hacia arriba
  • Firebase android ¿Cómo evitar que FirebaseRecyclerAdapter se actualice automáticamente?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.