Los resultados de RecyclerView + Glide resultan en un lío
Estoy usando recyclerView y Glide para implementar una galería horizontal, y aquí está el código principal:
@Override public void onBindViewHolder(ViewHolder holder, final int position) { if (mListener != null) { holder.mImageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onListItemClick(v, position); } }); } Firmware.VideoModel videoModel = mDataList.get(position); String url = videoModel.getPreurl(); if (position == 0) { holder.mImageView.setPadding(mCtx.getResources().getDimensionPixelOffset(R.dimen.activity_horizontal_margin) - mCtx.getResources().getDimensionPixelOffset(R.dimen.image_margin), holder.mImageView.getPaddingTop(), holder.mImageView.getPaddingRight(), holder.mImageView.getPaddingBottom()); } else if (mDataList != null && position == mDataList.size() - 1) { holder.mImageView.setPadding(holder.mImageView.getPaddingLeft(), holder.mImageView.getPaddingTop(), mCtx.getResources().getDimensionPixelOffset(R.dimen.activity_horizontal_margin), holder.mImageView.getPaddingBottom()); } if (mDataList != null && mDataList.size() >= 0) { Glide.with(mCtx).load(url).placeholder(R.drawable.image_placeholder).error(R.drawable.image_placeholder).into(holder.mImageView); if (videoModel.isVideo()) { holder.mImageButton.setVisibility(View.VISIBLE); } else { holder.mImageButton.setVisibility(View.GONE); } } }
Intenté establecer un relleno de espacio en la primera y la última imagen para que pueda desplazar todas las imágenes al borde de la pantalla, al igual que Google Play.
- Picasso: fuera de la memoria
- Picasso IllegalArgumentException El objetivo no debe ser nulo
- Cómo agregar un token de autenticación en el encabezado de la biblioteca Picasso
- Visualización de una imagen descargada de Internet como anotación - Uso de Picasso
- UIL, Picasso - Las imágenes en adaptador siempre se recargan cuando se detiene el desplazamiento
Tristemente aquí está el problema:
Como recyclerView reciclarás las vistas que no están en el área visible, los rellenos que pongo estarán en un lío mientras desplazo este recicladorVer izquierda y derecha. El relleno se añadirá a la segunda, incluso a la tercera o cualquier otra imagen si se recicla la vista de la posición …
He stackoverflowd la respuesta, uno de ellos es llamar:
holder.setIsRecyclable(false)
Esto realmente funciona. Pero eso no tiene sentido usar un derecho de RecyclerView? Así que espero que alguien me pueda ayudar. Gracias.
- Añadir imagen de fondo a Android ListView con Picasso
- Cómo cargar un mapa de bits en una vista de imagen con Picasso
- Picasso carga de imagen de devolución de llamada
- Invalidar caché en Picasso
- Cargando varias imágenes con Picasso en el fondo
- Obtener Bitmap de ImageView cargado con Picasso
- Android: Picasso no carga algunas imágenes
- Picasso no puede cargar imágenes grandes (de la cámara y Uri local)
No debe cambiar el relleno de forma dinámica en lugar de utilizar varios tipos distintos de ViewHolders (con diferentes diseños) o LayoutManager personalizado para sus necesidades.
- Android / Java Face Recognition: género, edad, emociones
- Construir módulo de estudio de android no encuentra el paquete como dependencia