Partager via


Xamarin.Android ListView

ListView est un composant important de l’interface utilisateur des applications Android ; il est utilisé partout dans les listes courtes d’options de menu aux longues listes de contacts ou favoris Internet. Il offre un moyen simple de présenter une liste de lignes de défilement qui peut être mise en forme avec un style intégré ou personnalisé de manière étendue.

Vue d’ensemble

Les vues de liste et les adaptateurs sont inclus dans les blocs de construction les plus fondamentaux des applications Android. La ListView classe offre un moyen flexible de présenter des données, qu’il s’agisse d’un menu court ou d’une longue liste de défilement. Il fournit des fonctionnalités d’utilisation telles que le défilement rapide, les index et la sélection unique ou multiple pour vous aider à créer des interfaces utilisateur conviviales pour vos applications. Une instance de ListView requiert un Adapter qui le remplit avec des données contenues dans les affichages de ligne.

Ce guide explique comment implémenter ListView et les différentes Adapter classes dans Xamarin.Android. Il montre également comment personnaliser l’apparence d’un ListView, et traite de l’importance de la réutilisation des lignes pour réduire la consommation de mémoire. Il existe également une discussion sur l’impact ListView et Adapter l’utilisation du cycle de vie de l’activité. Si vous travaillez sur des applications multiplateformes avec Xamarin.iOS, le ListView contrôle est structurellement similaire à l’iOS UITableView (et Android Adapter est similaire à celui-ci UITableViewSource).

Tout d’abord, un court tutoriel présente l’exemple ListView de code de base. Ensuite, des liens vers des rubriques plus avancées sont fournis pour vous aider à utiliser ListView des applications réelles.

Remarque

Le RecyclerView widget est une version plus avancée et flexible de ListView. Étant donné qu’il RecyclerView est conçu pour être le successeur de ListView (et GridView), nous vous recommandons d’utiliser RecyclerView plutôt que ListView pour le nouveau développement d’applications. Pour plus d’informations, consultez RecyclerView.

Didacticiel ListView

ListView est un ViewGroup qui crée une liste d’éléments défilants. Les éléments de liste sont automatiquement insérés dans la liste à l’aide d’un IListAdapter.

Dans ce tutoriel, vous allez créer une liste défilante de noms de pays/régions lues à partir d’un tableau de chaînes. Lorsqu’un élément de liste est sélectionné, un message toast affiche la position de l’élément dans la liste.

Démarrez un nouveau projet nommé HelloListView.

Créez un fichier XML nommé list_item.xml et enregistrez-le dans le dossier Resources/Layout/ . Insérez les éléments suivants :

<?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>

Ce fichier définit la disposition de chaque élément qui sera placé dans le ListView.

Ouvrez MainActivity.cs et modifiez la classe à étendre ListActivity (au lieu de Activity:

public class MainActivity : ListActivity
{

Insérez le code suivant pour la OnCreate()méthode ) :

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();
    };
}

Notez que cela ne charge pas un fichier de disposition pour l’activité (que vous faites généralement avec SetContentView(int))). Au lieu de cela, définir le ListAdapter ajoute automatiquement une propriété ListView pour remplir l’écran entier du ListActivity. Cette méthode accepte un ArrayAdapter<T>tableau d’éléments de liste qui sera placé dans le ListView. LeArrayAdapter<T> constructeur prend l’application Context, la description de disposition pour chaque élément de liste (créé à l’étape précédente) et une T[] ou Java.Util.IList<T> tableau d’objets à insérer dans le ListView (défini ensuite).

LeTextFilterEnabled la propriété active le filtrage de texte pour le ListView, de sorte que lorsque l’utilisateur commence à taper, la liste sera filtrée.

LeItemClick l’événement peut être utilisé pour abonner des gestionnaires pour les clics. Lorsqu’un élément dans le ListView est cliqué, le gestionnaire est appelé et un Toast le message s’affiche à l’aide du texte de l’élément cliqué.

Vous pouvez utiliser des conceptions d’éléments de liste fournies par la plateforme au lieu de définir votre propre fichier de disposition pour le ListAdapter. Par exemple, essayez d’utiliser Android.Resource.Layout.SimpleListItem1 au lieu de Resource.Layout.list_item.

Ajoutez l'instruction using suivante :

using System;

Ensuite, ajoutez le tableau de chaînes suivant en tant que membre 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"
  };

Il s’agit du tableau de chaînes qui seront placées dans le ListView.

Exécutez l’application. Vous pouvez faire défiler la liste ou taper pour le filtrer, puis cliquer sur un élément pour afficher un message. Un résultat semblable à celui-ci doit s’afficher :

Exemple de capture d’écran de ListView avec des noms de pays/régions

Notez que l’utilisation d’un tableau de chaînes codé en dur n’est pas la meilleure pratique de conception. L’un d’eux est utilisé dans ce tutoriel par souci de simplicité, pour illustrer le ListView Widget. La meilleure pratique consiste à référencer un tableau de chaînes défini par une ressource externe, par exemple avec une string-array ressource dans votre fichier Resources/Values/Strings.xml de projet. Par exemple :

<?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>

Pour utiliser ces chaînes de ressources pour le ArrayAdapter, remplacez l’original ListAdapter ligne avec les éléments suivants :

string[] countries = Resources.GetStringArray (Resource.Array.countries_array);
ListAdapter = new ArrayAdapter<string> (this, Resource.Layout.list_item, countries);

Exécutez l’application. Un résultat semblable à celui-ci doit s’afficher :

Exemple de capture d’écran de ListView avec une liste plus petite de noms

Aller plus loin avec ListView

Les rubriques restantes (liées ci-dessous) examinent en profondeur l’utilisation de la ListView classe et les différents types de types d’adaptateurs que vous pouvez utiliser avec celui-ci. La structure est comme suit :

  • Apparence visuelle : parties du ListView contrôle et fonctionnement.

  • Classes : vue d’ensemble des classes utilisées pour afficher un ListView.

  • Affichage des données dans un ListView : comment afficher une liste simple de données ; comment implémenter ListView's des fonctionnalités d’utilisation ; comment utiliser différentes dispositions de lignes intégrées ; et comment les adaptateurs enregistrent de la mémoire en réutilisant des vues de lignes.

  • Apparence personnalisée : modification du style des ListView dispositions, polices et couleurs personnalisées.

  • Utilisation de SQLite : comment afficher des données à partir d’une base de données SQLite avec un CursorAdapter.

  • Cycle de vie de l’activité : considérations relatives à la conception lors de l’implémentation ListView d’activités, notamment l’emplacement où, dans le cycle de vie, vous devez remplir vos données et quand libérer des ressources.

La discussion (divisée en six parties) commence par une vue d’ensemble de la ListView classe elle-même avant d’introduire progressivement des exemples plus complexes de la façon de l’utiliser.

Résumé

Cet ensemble de rubriques a introduit ListView et fourni quelques exemples d’utilisation des fonctionnalités intégrées du ListActivity. Il a abordé les implémentations personnalisées qui ListView permettaient des dispositions colorées et l’utilisation d’une base de données SQLite, et il a brièvement abordé la pertinence du cycle de vie de l’activité sur votre ListView implémentation.