Xamarin.Forms Introdução ao CollectionView

Baixar exemplo Baixar o exemplo

CollectionView é uma exibição para apresentar listas de dados usando especificações de layout diferentes. Ele tem como objetivo fornecer uma alternativa mais flexível e com desempenho para ListView. Por exemplo, as capturas de tela a seguir mostram um CollectionView que usa uma grade vertical de duas colunas e que permite várias seleções:

Captura de tela de um layout de grade vertical CollectionView, no layout de grade vertical iOS e Android

CollectionView deve ser usado para apresentar listas de dados que exigem rolagem ou seleção. Um layout associável pode ser usado quando os dados a serem exibidos não exigem rolagem ou seleção. Para obter mais informações, consulte Layouts associáveis em Xamarin.Forms.

CollectionView está disponível a partir da Xamarin.Forms 4.3.

Importante

CollectionViewestá disponível no iOS e no Android, mas só está parcialmente disponível no Plataforma Universal do Windows.

Diferenças de CollectionView e ListView

Embora as CollectionView APIs e ListView sejam semelhantes, há algumas diferenças notáveis:

  • CollectionView tem um modelo de layout flexível, que permite que os dados sejam apresentados vertical ou horizontalmente, em uma lista ou uma grade.
  • CollectionView dá suporte a seleção única e múltipla.
  • CollectionView não tem nenhum conceito de células. Em vez disso, um modelo de dados é usado para definir a aparência de cada item de dados na lista.
  • CollectionView utiliza automaticamente a virtualização fornecida pelos controles nativos subjacentes.
  • CollectionView reduz a superfície de API de ListView. Muitas propriedades e eventos de ListView não estão presentes em CollectionView.
  • CollectionView não inclui separadores internos.
  • CollectionView gerará uma exceção se ela ItemsSource for atualizada do thread da interface do usuário.

Mover de ListView para CollectionView

ListView as implementações em aplicativos existentes Xamarin.Forms podem ser migradas para CollectionView implementações com a ajuda da tabela a seguir:

Conceito API de ListView CollectionView
Dados ItemsSource Um CollectionView é preenchido com dados definindo sua ItemsSource propriedade. Para obter mais informações, confira Preencher um CollectionView com dados.
Aparência do item ItemTemplate A aparência de cada item em um CollectionView pode ser definida definindo a ItemTemplate propriedade como um DataTemplate. Para obter mais informações, consulte Definir aparência do item.
Células TextCell, ImageCell, ViewCell CollectionView não tem nenhum conceito de células e, portanto, nenhum conceito de indicadores de divulgação. Em vez disso, um modelo de dados é usado para definir a aparência de cada item de dados na lista.
Separadores de linha SeparatorColor, SeparatorVisibility CollectionView não inclui separadores internos. Eles podem ser fornecidos, se desejado, no modelo de item.
Seleção SelectionMode, SelectedItem CollectionView dá suporte a seleção única e múltipla. Para obter mais informações, consulte Xamarin.Forms CollectionView Selection.
Altura da linha HasUnevenRows, RowHeight Em um CollectionView, a altura da linha de cada item é determinada pela ItemSizingStrategy propriedade . Para obter mais informações, consulte Dimensionamento de itens.
Cache CachingStrategy CollectionView usa automaticamente a virtualização fornecida pelos controles nativos subjacentes.
Cabeçalhos e rodapés Header, HeaderElement, HeaderTemplate, Footer, FooterElement, FooterTemplate CollectionView pode apresentar um cabeçalho e rodapé que rolam com os itens na lista, por meio das Headerpropriedades , Footer, HeaderTemplatee FooterTemplate . Para obter mais informações, consulte Cabeçalhos e rodapés.
Agrupamento GroupDisplayBinding, GroupHeaderTemplate, GroupShortNameBinding, IsGroupingEnabled CollectionView exibe dados agrupados corretamente definindo sua IsGrouped propriedade como true. Cabeçalhos de grupo e rodapés de grupo podem ser personalizados definindo as GroupHeaderTemplate propriedades e GroupFooterTemplate como DataTemplate objetos. Para obter mais informações, consulte Xamarin.Forms Agrupamento CollectionView.
Puxar para atualizar IsPullToRefreshEnabled, IsRefreshing, RefreshAllowed, RefreshCommand, RefreshControlColor, BeginRefresh(), EndRefresh() Há suporte para o pull para atualizar a funcionalidade definindo um CollectionView como o filho de um RefreshView. Para obter mais informações, consulte Pull para atualizar.
Itens de menu de contexto ContextActions Há suporte para itens de menu de contexto definindo um SwipeView como o modo de exibição raiz no DataTemplate que define a aparência de cada item de dados no CollectionView. Para obter mais informações, confira Menus de contexto.
Rolagem ScrollTo() CollectionView define métodos ScrollTo , que rolam itens para exibição. Para obter mais informações, consulte Rolagem.