Dentro de las posibilidades que nos ofrece Xamarin Forms para mostrar la información una de las mas usadas es el ListView. La implementación de un ListView es recomendable hacerla sobre un ObservableCollection, ya que su comportamiento es similar una colección de datos estándard con la salvedad que implementa dos propiedades que facilitan la interacción con el resto de elementos de la aplicación. Estas propiedades son INotifyCollectionChanged e INotifyPropertyChanged. Mediante dichas propiedades podemos saber cuando un elemento, o propiedad, de la colección ha sufrido una modificación, ya sea un añadido, modificación o eliminación. Por lo que, en conjunción con el data binding, nos permite tener una lista que se mantiene actualizada sin necesidad de escribir gran cantidad de código.

El principal uso de los listview es la visualización de largas listas de datos relacionados entre sí, por ejemplo contactos, listas de música, listas de tareas, etc. Lo importante, para aprovechar al máximo sus funcionalidades es que estos datos sean similares ya que el listview, en su estrucutra, está definido que cada registro contiene una única celda, por lo que todas las entradas de la lista comparten el mismo tipo de celda. Sin embargo para mostrar, por ejemplo, un listado de opciones de configuración de la aplicación es mejor decantarse por un tableview, ya que cada registro puede poseer distinto número y tipo de celdas.

Dentro de la estructura del ListView hay que distinguir entre el uso de los elementos definidos de forma estándar en Xamarin Forms y los custom o personalizados.

Los primeros ofrecen una gran eficiencia en la comunicación con las plataformas nativas (IOS, Android, Windows Phone) y, aún siendo estándard, tienen grandes opciones de configuración. Mientras que los segundos permiten mayor flexibilidad a la hora de mostrar y organizar los datos pero requieren implementar código adicional en las distintas plataformas para su correcto funcionamiento.

Si bien es cierto que la limitación del listview estándar de un único tipo de celda puede parecer problemática, se puede “bordear” con un pequeño truco aprovechado el layout Grid y definirlo dentro de nuestra celda. De esta forma la celda, que es una elemento único, contendrá tantos elementos como hayamos definido en el grid.

View post on imgur.com

(Imagen, código e inspiración de James Montemagno y sus monos)

Como podéis ver aún limitándonos a los controles estandard de Xamarin Forms, hay muchas posibilidades y opciones de crear listados de aspecto mas que decente sin grandes complicaciones ni toneladas de código.