recyclerview recycler manager android android-recyclerview recycler-adapter staggered-gridview

manager - recycler gridview android



StaggeredGridLayout se arruina cuando se desplaza hacia arriba (2)

Prueba esto:

StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL); manager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS); recyclerView.setLayoutManager(manager);

o: cambiar de posición cuando se desplaza

o: Proyecto github Picasso / Glide-RecyclerView-StaggeredGridLayoutManager

Hice esto StaggeredGridLayout para mi RecyclerView :

Aquí está el código:

@Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) { Photo photo = mPhotos.get(position); TextView titleView = ((CellViewHolder) viewHolder).titleTextView; titleView.setText(photo.getTitle()); TextView subTitleView = ((CellViewHolder) viewHolder).subtitleTextView; subTitleView.setText(photo.getName()); Picasso.with(mContext).load(photo.getPhotoUrl()).into(((CellViewHolder) viewHolder).imageView); ImageView userImageOverlay = ((CellViewHolder) viewHolder).userImageOverlay; StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) viewHolder.itemView.getLayoutParams(); if (position == 0 || position % 4 == 0) { layoutParams.setFullSpan(true); layoutParams.height = Math.round(Utils.convertDpToPixel(202.67f, mContext)); titleView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 21.67f); subTitleView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12.00f); userImageOverlay.setVisibility(View.VISIBLE); } else if ((position - 1) % 4 == 0) { layoutParams.setFullSpan(false); layoutParams.height = Math.round(Utils.convertDpToPixel(360.00f, mContext)); titleView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15.00f); subTitleView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10.00f); userImageOverlay.setVisibility(View.GONE); } else { layoutParams.setFullSpan(false); layoutParams.height = Math.round(Utils.convertDpToPixel(180.00f, mContext)); titleView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15.00f); subTitleView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10.00f); userImageOverlay.setVisibility(View.GONE); } }

Todo funciona bien, excepto cuando lo desplazo hacia arriba. Dibuja celdas por posición en orden descendente y deja espacios vacíos en la cuadrícula:

¿Alguna idea de cómo mantener el mismo patrón incluso desplazándolo?


necesitas establecer la estrategia de brecha

mLayoutMang.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS);

GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS actualizará el diseño cuando el estado de desplazamiento se cambia a inactivo