Foros del Web » Programando para Internet » Android »

Listiview: Problema con scroll y color de fondo de las filas

Estas en el tema de Listiview: Problema con scroll y color de fondo de las filas en el foro de Android en Foros del Web. Hola grupo, Tengo un Listiview en un activity que extiende de ListActivity que muestra una lista con el siguiente comportamiento: - Cuando un item cumple ...
  #1 (permalink)  
Antiguo 23/12/2012, 15:29
 
Fecha de Ingreso: agosto-2011
Mensajes: 13
Antigüedad: 13 años, 2 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.
  #2 (permalink)  
Antiguo 27/12/2012, 10:08
 
Fecha de Ingreso: agosto-2006
Mensajes: 8
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Listiview: Problema con scroll y color de fondo de las filas

En el else al momento de pintar la fila deberias poner el color por defecto, ya que la view en la segunda vuelta ya se encuentra "precargada" con los valores que se establecieron anteriormente

Código:
//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);
	    } else {
                rowView.setBackgroundColor(Color.TRANSPARENT);
            }
  #3 (permalink)  
Antiguo 28/12/2012, 07:04
 
Fecha de Ingreso: agosto-2011
Mensajes: 13
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Listiview: Problema con scroll y color de fondo de las filas

Excelente!! funcionó de maravillas!

Gracias!

Etiquetas: activity, color, filas, scroll
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:01.