Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Recyclerview Adaptador y Glide – misma imagen cada 4-5 filas

Tengo este problema – apenas para los propósitos de prueba agregué ParseFile a uno de ParseObject de la lista recibida. En lugar de mostrar sólo en esa fila que muestra cada 4-5 filas, a veces más, a veces menos. Supspecto que la visión del reciclaje tiene algo que ver con esto. Curiosamente, otros datos (eliminados de este ejemplo) funcionan bien con la variable de position .

 @Override public void onBindViewHolder(ViewHolder holder, int position) { if(parseList.get(position).get("logo") != null){ ParseFile image = (ParseFile) parseList.get(position).get("logo"); String url = image.getUrl(); Glide.with(context) .load(url) .placeholder(R.drawable.piwo_48) .transform(new CircleTransform(context)) .into(holder.imageView); } } 

  • "RecyclerView: No hay adaptador conectado; Omitir el diseño "para recyclerview en el fragmento
  • Diferente posición z para los elementos ListView
  • ¿Cómo simular la actividad de matar para conservar la memoria?
  • Filtrar etiquetas en LogCat (en el complemento Android Eclipse)
  • Construir Reproducir Interfaz similar a la música
  • ¿Por qué no comienza este servicio simple?
  • TabHost con Actividades vs ActionBar con Fragmentos
  • Android ImageButton - determina qué recurso está configurado actualmente
  • Mejor manera de actualizar el adaptador / ListView en Android
  • Android Asynctask vs Runnable vs timertask vs Servicio
  • Método setUp en android.test.AndroidTestCase no es burlado
  • Cómo adjuntar GestureDetector a una ListPreference?
  • 4 Solutions collect form web for “Recyclerview Adaptador y Glide – misma imagen cada 4-5 filas”

    Las respuestas aquí son incorrectas, aunque están en el camino correcto.

    Es necesario llamar a Glide#clear() , no sólo establecer la imagen drawable a null. Si no llama clear() , una carga asíncrona que termina fuera de servicio puede causar problemas de reciclado de la vista. Su código debería tener este aspecto:

     @Override public void onBindViewHolder(ViewHolder holder, int position) { if (parseList.get(position).get("logo") != null) { ParseFile image = (ParseFile) parseList.get(position).get("logo"); String url = image.getUrl(); Glide.with(context) .load(url) .placeholder(R.drawable.piwo_48) .transform(new CircleTransform(context)) .into(holder.imageView); } else { // make sure Glide doesn't load anything into this view until told otherwise Glide.clear(holder.imageView); // remove the placeholder (optional); read comments below holder.imageView.setImageDrawable(null); } } 

    Cuando "logotipo" es nulo, se obtiene la imagen reciclada en lugar de borrarla. Agregue este código para borrar correctamente la imagen:

     holder.imageView.setImageDrawable(null); 

    En RecyclerView cada fila se recicla con nuevos datos. En el código que está configurando ImageView sólo cuando no es null y de lo contrario no hacer nada. En este caso, cuando no es nulo, ImageView mostrará la imagen antigua ya que no override el objeto actual. Puede solucionar esto agregando otra condición y configurando ImageView a null / blank cualquier cosa.

     @Override public void onBindViewHolder(ViewHolder holder, int position) { if(parseList.get(position).get("logo") != null){ ParseFile image = (ParseFile) parseList.get(position).get("logo"); String url = image.getUrl(); Glide.with(context) .load(url) .placeholder(R.drawable.piwo_48) .transform(new CircleTransform(context)) .into(holder.imageView); } else{ holder.imageView.setImageDrawable(null); } } 

    Tal vez usted necesita para intentar algo como esto

     .signature(new StringSignature(String.valueOf(System.currentTimeMillis()))) 

    Muestra

     Glide.with(context) .load(url) .placeholder(R.drawable.progress_animation) .crossFade() .signature(new StringSignature(String.valueOf(System.currentTimeMillis()))) .error(R.drawable.image_error_404) .into(iv); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.