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 :
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 :
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.
- Parties de ListView et fonctionnalité
- Remplissage d’un ListView avec des données
- Personnalisation de l’apparence d’une ListView
- Utilisation de CursorAdapters
- Utilisation d’un ContentProvider
- ListView et le cycle de vie des activités
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.