Tengo un Listiview en un activity que extiende de ListActivity que muestra una lista con el siguiente comportamiento:
- Cuando un item cumple una condición especifica se le aplica un color de fondo.
- Cuando se hace "click" (evento onListItemClick) en un item de la lista el color de fondo debe ser quitado y volver al color original
El problema se da al momento de usar el scroll y avanzar en los items de la lista aparecen con color de fondo los items que no cumplen la condición.
Código del adapter (Adapter personalizado: SimpleCursorAdapter) para crear los items del listview:
Código:
//Evento click para los items del listiview: Áca le quito el color de fondo@Override public View getView(int position, View convertView, ViewGroup parent) { View rowView = convertView; if (rowView == null) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); rowView = inflater.inflate(this.layout, null); ViewHolder viewHolder = new ViewHolder(); viewHolder.textViewName = (TextView) rowView.findViewById(R.id.textViewName); rowView.setTag(viewHolder); } ViewHolder holder = (ViewHolder) rowView.getTag(); Cursor c = getCursor(); c.moveToPosition(position); //Seteamos los datos de las columnas holder.textViewName.setText(c.getString(c.getColumnIndexOrThrow("name"))); //Asignamos el color de fondo en caso que el item no ha sido leido if(c.getString(c.getColumnIndexOrThrow("unread")).equals("1")){ rowView.setBackgroundColor(Color.BLUE); } return rowView; }
Código:
El efecto deseado se logra, es decir, muestra las filas con el color de fondo y al hacer "click" le quita el color, pero al hacer scroll, llegar al final de la lista y luego volver a recorrer la lista los items vuelven a aparecer con el color de fondo siendo que se lo quitamos en el evento "click"protected void onListItemClick(ListView listView, View view, int position, long id) { View item = view; item.setBackgroundColor(Color.TRANSPARENT); }
¿ Cual puede ser el problema ?
¿ Por qué cuando uso el scroll y recorro los items vuelve a aparecer el color de fondo de la fila que fue quitado al hacer click?
Saludos y gracias.