Normalmente no suelo escribir este tipo de artículos porque por norma general buscando por internet ya podemos encontrar muchísima información recopilada acerca de ello. Pero en este caso voy hacer una excepción ya que me he dado cuenta de que apenas se encuentran tutoriales sobre el siguiente problema...las listas reutilizables de Android.
Para entrar en materia, explicare cuales son sus efectos y las razones de porque ha sido planteado así.
Supongamos que tenemos un ListView personalizado y en cada item de la lista hay un TextView con un Checkbox. El problema viene dado cuando chequeamos el Checkbox, nos movemos por la lista y al volver, ese checkbox ya no esta chequeado!
Carai! ¿ Y cual sera el problema ? , ¿Que gracia tiene que el usuario le de a una opción y el componente se reinicie solo ?
A groso modo decir que en realidad una lista no tiene cargados todos sus componentes y que cuando nos movemos por la lista, los nuevos componentes que van apareciendo por pantalla han sido creados en ese momento y los que ya han desaparecido los destruye.
¿Y para que los destruye? Imagínate que creas una lista inmensa de resultados, todos ellos han tenido que ser cargados uno por uno aumentando el uso de la CPU y de la memoria, que al final se podría traducir en mayor consumo de batería y pudiéndose dar (a nivel de usuario) que después de tanto procesar la lista, con el primer resultado ya te valga. Así que para evitar eso, se decidió que la mejor forma seria que cargara solo los elementos que pudiera abarcar la pantalla.
Y es por eso (volviendo al problema anterior) que cuando vuelves a la opción donde chequeaste ese item vuelve a estar como en el principio, y es que ha sido creado de zero.
Espero que ahora sepas un poco mas o menos por donde van los tiros.
Ahora si, vamos a picar código.