Estoy trabajando en una ListActivity que mostrará un montón de números (pesos). Me gustaría cambiar el fondo de una fila específica en el ListView. Para hacer esto, he creado una implementación personalizada de la clase ArrayAdapter y he anulado el método getView. El adaptador acepta una lista de números y establece el fondo de la fila con el número 20 en amarillo (por razones de simplicidad).Custom ArrayAdapter setPrincipal en getView
public class WeightListAdapter extends ArrayAdapter<Integer> {
private List<Integer> mWeights;
public WeightListAdapter(Context context, List<Integer> objects) {
super(context, android.R.layout.simple_list_item_1, objects);
mWeights = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
int itemWeight = mWeights.get(position);
if (itemWeight == 20) {
v.setBackgroundColor(Color.YELLOW);
}
return v;
}
}
El problema es que no sólo la fila con el número 20 se pone el fondo amarillo, sino también la fila con el número 0 (la primera fila que es) y no estoy seguro de por qué esto es así.
¿Estoy haciendo algo mal en el método getView (como llamar al método súper)? Mi razonamiento para la implementación es: todas las vistas devueltas deben ser iguales (es por eso que estoy llamando al método super), solo la vista que se ajusta al criterio if debe cambiarse.
Gracias por su ayuda!
Ya veo. Esto tendría sentido, sí. Entonces la pregunta ahora es cuál es la mejor manera de resolver esto. ¿Desechar el convertView o establecer los atributos de estilo para ambas opciones, si es que el resto? – Igor