Fondo ListView se vuelve negro cuando se desplaza

He creado una lista específica que existe de los siguientes elementos para crear una lista desplazable con cada fila que contiene una imagen en el lado izquierdo y algo de texto en el lado derecho:

Para comenzar con un diseño “raíz”:

    

y luego dentro de ListView coloco el siguiente ítem de “fila”:

      

Siempre que la pantalla se muestre estáticamente (como en ningún movimiento) se mostrará correctamente, pero cuando empiece a desplazarme por la lista, se mostrará el fondo del elemento de la fila (un “icono” como se puede ver en el código). se muestra correctamente, pero el fondo del diseño “raíz” se volverá completamente negro … cuando el desplazamiento se detiene, la mayoría de las veces, el fondo recuperará su color … Al probar, también agregué un TextView en esa raíz- elemento con el mismo fondo, este detendrá su color cuando se desplaza la lista … ¿Alguna idea de por qué está sucediendo esto y cómo resolverlo?

Agregar un atributo en la etiqueta ListView

 android:cacheColorHint="#00000000" // setting transparent color 

Para más detalles, mira este blog

Es muy simple usar esta línea en su archivo de diseño:

 android:scrollingCache="false" 

Me gusta esto:

  

puedes usar esto:

 list.setCacheColorHint(Color.TRANSPARENT); list.requestFocus(0); 

 android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawSelectorOnTop="false" android:divider="#C8C8C8" android:background="#C8C8C8" android:cacheColorHint="#00000000"/> 

Tenemos muchas opciones para este problema, puede establecer el fondo como transparente a través de la progtwigción como

 yourlistview.setCacheColorHint(Color.TRANSPARENT); 

o a través de xml

 android:cacheColorHint="@android:color/transparent" 

Estoy usando imágenes en listView y se vuelve negro a veces en Samsung s4 ni siquiera se desplaza. Fue un error estúpido que hice en el adaptador. Solo puse mi vista en nulo para solucionar este problema

  @Override public View getView(int position, View convertView, ViewGroup parent) { Holder holder; convertView = null; // convert view should be null if (convertView == null) { holder = new Holder(); convertView = inflater1.inflate(R.layout.listview_draftreport_item, null); } } 

Hay muchas respuestas a esta pregunta, pero hoy me di cuenta de que a esta pregunta aún le falta una información crítica.

Hay dos soluciones posibles para el problema, ambas funcionan pero cada una debe usarse en diferentes situaciones.


Métodos

Use android:cacheColorHint cuando su ListView tenga un fondo de color sólido .

 @android:color/transparent 

Use android:scrollingCache cuando su ListView tenga una imagen (compleja) como fondo.

 false 

Nota

Cuando su ListView tenga un fondo de color sólido, ambos métodos funcionarán, por lo que no solo funcionará el cacheColorHint . Pero no se recomienda utilizar el método scrolingCache para fondos de color sólido ya que desactiva un método de optimización utilizado para animar y desplazar el ListView.

Nota para la nota: scrolingCache establecido en falso no necesariamente significa que las animaciones y el desplazamiento de ListView se volverán lentos.

En tu xml donde usar Listview set

  android:cacheColorHint="@android:color/transparent" 
 android:cacheColorHint="@android:color/transparent" 

Lo siguiente funcionó para mí:

 myListView.setScrollingCacheEnabled(false); 

android:cacheColorHint="#00000000"// setting transparent color

o

no establezca el fondo de la vista de lista.