Xamarin.Android ListView
ListView é um componente importante da interface do usuário de aplicativos Android; Ele é usado em todos os lugares, desde pequenas listas de opções de menu até longas listas de contatos ou favoritos da Internet. Ele fornece uma maneira simples de apresentar uma lista de rolagem de linhas que podem ser formatadas com um estilo interno ou personalizadas extensivamente.
Visão geral
Modos de exibição de lista e adaptadores estão incluídos nos blocos de construção mais fundamentais dos aplicativos Android. A ListView
classe fornece uma maneira flexível de apresentar dados, seja um menu curto ou uma longa lista de rolagem. Ele fornece recursos de usabilidade como rolagem rápida, índices e seleção única ou múltipla para ajudá-lo a criar interfaces de usuário compatíveis com dispositivos móveis para seus aplicativos. A instância ListView
requer um Adaptador para fornecer a ela dados contidos nas exibições de linha.
Este guia explica como implementar ListView
e as várias Adapter
classes no Xamarin.Android. Ele também demonstra como personalizar a aparência de um ListView
, e discute a importância da reutilização de linha para reduzir o consumo de memória. Há também alguma discussão sobre como o ciclo de vida da atividade afeta ListView
e Adapter
usa. Se você estiver trabalhando em aplicativos multiplataforma com o Xamarin.iOS, o ListView
controle é estruturalmente semelhante ao iOS UITableView
(e o Android Adapter
é semelhante ao UITableViewSource
).
Primeiro, um pequeno tutorial apresenta o ListView
com um exemplo de código básico. Em seguida, links para tópicos mais avançados são fornecidos para ajudá-lo a usar ListView
em aplicativos do mundo real.
Observação
O RecyclerView
widget é uma versão mais avançada e flexível do ListView
. Como RecyclerView
foi projetado para ser o sucessor de ListView
(e GridView
), recomendamos que você use RecyclerView
em vez de para o desenvolvimento de ListView
novos aplicativos. Para obter mais informações, consulte RecyclerView.
Tutorial de ListView
ListView
é um ViewGroup
que cria uma lista de itens roláveis. Os itens da lista são inseridos automaticamente na lista usando um IListAdapter
arquivo .
Neste tutorial, você criará uma lista rolável de nomes de país/região que são lidos de uma matriz de cadeia de caracteres. Quando um item de lista é selecionado, uma mensagem do sistema exibirá a posição do item na lista.
Inicie um novo projeto chamado HelloListView.
Crie um arquivo XML chamado list_item.xml e salve-o dentro da pasta Resources/Layout/ . Inserir o seguinte:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16sp">
</TextView>
Esse arquivo define o layout para cada item que será colocado no ListView
.
Abra MainActivity.cs
e modifique a classe para estender ListActivity
(em vez de Activity
):
public class MainActivity : ListActivity
{
Insira o seguinte código para o OnCreate()
método ):
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
ListAdapter = new ArrayAdapter<string> (this, Resource.Layout.list_item, countries);
ListView.TextFilterEnabled = true;
ListView.ItemClick += delegate (object sender, AdapterView.ItemClickEventArgs args)
{
Toast.MakeText(Application, ((TextView)args.View).Text, ToastLength.Short).Show();
};
}
Observe que isso não carrega um arquivo de layout para a Atividade (o que você geralmente faz com SetContentView(int)
)).
Em vez disso, defina o ListAdapter
propriedade adiciona automaticamente um ListView
para preencher toda a ListActivity
tela do .
Esse método usa um ArrayAdapter<T>
, que gerencia a matriz de itens de lista que serão colocados no ListView
.
O ArrayAdapter<T>
O construtor pega o aplicativo Context
, a descrição do layout para cada item de lista (criado na etapa anterior) e um T[]
ou Java.Util.IList<T>
matriz de objetos a serem inseridos no ListView
(definido a seguir).
O TextFilterEnabled
ativa a filtragem de texto para o ListView
, de modo que, quando o usuário começar a digitar, a lista será filtrada.
O ItemClick
pode ser usado para inscrever manipuladores para cliques. Quando um item no ListView
é clicado, o manipulador é chamado e um Toast
é exibida, usando o texto do item clicado.
Você pode usar designs de item de lista fornecidos pela plataforma em vez de definir seu próprio arquivo de layout para o ListAdapter
.
Por exemplo, tente usar Android.Resource.Layout.SimpleListItem1
em vez de Resource.Layout.list_item
.
Adicione a instrução using
a seguir:
using System;
Em seguida, adicione a seguinte matriz de cadeia de caracteres como membro de MainActivity
:
static readonly string[] countries = new String[] {
"Afghanistan","Albania","Algeria","American Samoa","Andorra",
"Angola","Anguilla","Antarctica","Antigua and Barbuda","Argentina",
"Armenia","Aruba","Australia","Austria","Azerbaijan",
"Bahrain","Bangladesh","Barbados","Belarus","Belgium",
"Belize","Benin","Bermuda","Bhutan","Bolivia",
"Bosnia and Herzegovina","Botswana","Bouvet Island","Brazil","British Indian Ocean Territory",
"British Virgin Islands","Brunei","Bulgaria","Burkina Faso","Burundi",
"Cote d'Ivoire","Cambodia","Cameroon","Canada","Cape Verde",
"Cayman Islands","Central African Republic","Chad","Chile","China",
"Christmas Island","Cocos (Keeling) Islands","Colombia","Comoros","Congo",
"Cook Islands","Costa Rica","Croatia","Cuba","Cyprus","Czech Republic",
"Democratic Republic of the Congo","Denmark","Djibouti","Dominica","Dominican Republic",
"East Timor","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea",
"Estonia","Ethiopia","Faeroe Islands","Falkland Islands","Fiji","Finland",
"Former Yugoslav Republic of Macedonia","France","French Guiana","French Polynesia",
"French Southern Territories","Gabon","Georgia","Germany","Ghana","Gibraltar",
"Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guinea","Guinea-Bissau",
"Guyana","Haiti","Heard Island and McDonald Islands","Honduras","Hong Kong","Hungary",
"Iceland","India","Indonesia","Iran","Iraq","Ireland","Israel","Italy","Jamaica",
"Japan","Jordan","Kazakhstan","Kenya","Kiribati","Kuwait","Kyrgyzstan","Laos",
"Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg",
"Macau","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands",
"Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova",
"Monaco","Mongolia","Montserrat","Morocco","Mozambique","Myanmar","Namibia",
"Nauru","Nepal","Netherlands","Netherlands Antilles","New Caledonia","New Zealand",
"Nicaragua","Niger","Nigeria","Niue","Norfolk Island","North Korea","Northern Marianas",
"Norway","Oman","Pakistan","Palau","Panama","Papua New Guinea","Paraguay","Peru",
"Philippines","Pitcairn Islands","Poland","Portugal","Puerto Rico","Qatar",
"Reunion","Romania","Russia","Rwanda","Sqo Tome and Principe","Saint Helena",
"Saint Kitts and Nevis","Saint Lucia","Saint Pierre and Miquelon",
"Saint Vincent and the Grenadines","Samoa","San Marino","Saudi Arabia","Senegal",
"Seychelles","Sierra Leone","Singapore","Slovakia","Slovenia","Solomon Islands",
"Somalia","South Africa","South Georgia and the South Sandwich Islands","South Korea",
"Spain","Sri Lanka","Sudan","Suriname","Svalbard and Jan Mayen","Swaziland","Sweden",
"Switzerland","Syria","Taiwan","Tajikistan","Tanzania","Thailand","The Bahamas",
"The Gambia","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey",
"Turkmenistan","Turks and Caicos Islands","Tuvalu","Virgin Islands","Uganda",
"Ukraine","United Arab Emirates","United Kingdom",
"United States","United States Minor Outlying Islands","Uruguay","Uzbekistan",
"Vanuatu","Vatican City","Venezuela","Vietnam","Wallis and Futuna","Western Sahara",
"Yemen","Yugoslavia","Zambia","Zimbabwe"
};
Esta é a matriz de cadeias de caracteres que serão colocadas no ListView
.
Execute o aplicativo. Você pode rolar a lista ou digitá-la para filtrá-la e clicar em um item para ver uma mensagem. Você deverá ver algo como:
Observe que o uso de uma matriz de cadeia de caracteres codificada não é a prática de design recomendada. Um deles é usado neste tutorial para simplificar, para demonstrar o ListView
Widget. A prática melhor é fazer referência a uma matriz de cadeia de caracteres definida por um recurso externo, como com um string-array
recurso no arquivo Resources/Values/Strings.xml do projeto. Por exemplo:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">HelloListView</string>
<string-array name="countries_array">
<item>Bahrain</item>
<item>Bangladesh</item>
<item>Barbados</item>
<item>Belarus</item>
<item>Belgium</item>
<item>Belize</item>
<item>Benin</item>
</string-array>
</resources>
Para usar essas cadeias de caracteres de recurso para o ArrayAdapter
, substitua o original ListAdapter
linha com o seguinte:
string[] countries = Resources.GetStringArray (Resource.Array.countries_array);
ListAdapter = new ArrayAdapter<string> (this, Resource.Layout.list_item, countries);
Execute o aplicativo. Você deverá ver algo como:
Indo mais longe com ListView
Os tópicos restantes (vinculados abaixo) dão uma olhada abrangente no trabalho com a ListView
classe e os diferentes tipos de adaptador que você pode usar com ela. A estrutura é a seguinte:
Aparência Visual – Partes do
ListView
controle e como elas funcionam.Classes – Visão geral das classes usadas para exibir um
ListView
arquivo .Exibindo dados em um ListView – Como exibir uma lista simples de dados, como implementar
ListView's
recursos de usabilidade, como usar diferentes layouts de linha internos e como os adaptadores economizam memória reutilizando exibições de linha.Aparência personalizada – Alterando o
ListView
estilo do com layouts, fontes e cores personalizados.Usando SQLite – Como exibir dados de um banco de dados SQLite com um
CursorAdapter
arquivo .Ciclo de vida da atividade – Considerações de design ao implementar
ListView
atividades, incluindo onde no ciclo de vida você deve preencher seus dados e quando liberar recursos.
A discussão (dividida em seis partes) começa com uma visão geral da ListView
própria classe antes de introduzir exemplos progressivamente mais complexos de como usá-la.
- Partes e funcionalidade de ListView
- Preenchendo um ListView com dados
- Personalizar a aparência de uma ListView
- Usar CursorAdapters
- Usar um ContentProvider
- ListView e o ciclo de vida da atividade
Resumo
Este conjunto de tópicos introduziu ListView
e forneceu alguns exemplos de como usar os recursos internos do ListActivity
. Ele discutiu implementações personalizadas que permitiam layouts coloridos e o uso de ListView
um banco de dados SQLite, e abordou brevemente a relevância do ciclo de vida da atividade em sua ListView
implementação.