El caché ListView para diferentes filtros de color no funciona

Estoy utilizando un listview que utiliza el patrón de ViewHolder y obtener ventaja del mecanismo de almacenamiento en caché. Aquí hay un fragmento de código que intento establecer uno de los antecedentes de mi elemento de lista

if(drawable!=null) { if(this.backgroundBurnColor!=null && this.backgroundBurnColor.getValue()!=0) { Log.d("burncolor", this.backgroundBurnColor.getValue()+""); drawable.setColorFilter(this.backgroundBurnColor.getValue(), Mode.MULTIPLY); }else if(this.burnColorKey!=null) { Log.d("burncolor", this.Owner.getOwner().getColors().get(this.burnColorKey).getValue()+""); drawable.setColorFilter(this.Owner.getOwner().getColors().get(this.burnColorKey).getValue(), Mode.MULTIPLY); }else{ drawable.setColorFilter(null); } v.setBackgroundDrawable(drawable); } 

En este código el drawable es para el mismo tipo de elemento, pero incluso si el mismo tipo de elemento cuando cambio la imagen dibujable cambia como yo quiero. Pero el cambio de filtro de color de los cambios dibujables de todos los filtros drawables en la lista de partes que aparecen en la pantalla. Por ejemplo, cuando me desplazo hacia abajo de la lista y un filtro de color diferente aparece en la pantalla, a continuación, todos los filtros de color drawables 'girar al mismo filtro, necesito obtener el filtro de color por separado para cada una de las filas. ¿Alguna ayuda? Gracias

Para aquellos que se pregunta sobre la respuesta, hay una entrada en el blog de Romain Guy sobre mutaciones estirables en android: http://www.curious-creature.org/2009/05/02/drawable-mutations/

Cuando drawables se hace referencia desde los recursos, sólo una instancia de un Drawable inicializado, por lo que todas las referencias se refieren al mismo objeto. para esto hay un método mutate() para drawables

En lugar de escribir

  drawable.setColorFilter(null); 

escritura

  drawable.mutate().setColorFilter(null); 

resolverá el problema

El filtro de color se establece en un Drawable . Por lo tanto, si no desea que dos elementos tengan el mismo filtro de color, debe tener dos objetos Drawable separados para esos dos elementos.

  • ¿Es posible llamar manualmente onCreateView en un fragmento?
  • Refrescar una vista dentro de un fragmento
  • ¿Cuáles son los requisitos para una fuente (OTF o TTF) para que funcione bien en Android?
  • Código antes del problema setContentView
  • Preferencias independientes para cada vista en una aplicación para Android
  • Qué hace que el método OnDraw de View se llame y cuando
  • ¿Por qué ButterKnife usa un DebouncingOnClickListener para los métodos de @OnClick?
  • Vinculación de datos bidireccionales: falta el tipo definido por el usuario
  • System.gc () provocando una desaceleración desde el segundo inicio de la Actividad
  • Cómo agregar un marcador pin en la vista de la imagen en android
  • Posibilidad de saltar directamente a la segunda vista en ViewAnimator
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.