Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/12/2012, 15:29
manuteko
 
Fecha de Ingreso: agosto-2011
Mensajes: 13
Antigüedad: 12 años, 8 meses
Puntos: 0
Listiview: Problema con scroll y color de fondo de las filas

Hola grupo,

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:
@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;
	}
//Evento click para los items del listiview: Áca le quito el color de fondo
Código:
   	protected void onListItemClick(ListView listView, View view, int position, long id) {
   		
	    View item = view;
            item.setBackgroundColor(Color.TRANSPARENT);
		   			
   	}
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"

¿ 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.