Xamarin.Android ListView
ListView ist eine wichtige UI-Komponente von Android-Anwendungen; es wird überall verwendet, von kurzen Listen mit Menüoptionen bis hin zu langen Listen von Kontakten oder Internetfavoriten. Sie bietet eine einfache Möglichkeit, eine Bildlaufliste mit Zeilen darzustellen, die entweder mit einer integrierten Formatvorlage formatiert oder umfassend angepasst werden können.
Übersicht
Listenansichten und Adapter sind in den grundlegendsten Bausteinen von Android-Anwendungen enthalten. Die ListView
Klasse bietet eine flexible Möglichkeit zum Präsentieren von Daten, unabhängig davon, ob es sich um ein kurzes Menü oder eine lange Bildlaufliste handelt. Sie bietet Benutzerfreundlichkeitsfeatures wie schnelles Scrollen, Indizes und einzelne oder mehrfache Auswahl, um Sie bei der Erstellung mobiler benutzerfreundlicher Benutzeroberflächen für Ihre Anwendungen zu unterstützen. Eine ListView
-Instanz erfordert einen Adapter, um sie mit in Zeilenansichten enthaltenen Daten zu füllen.
In diesem Handbuch wird erläutert, wie die verschiedenen Adapter
Klassen in Xamarin.Android implementiert ListView
werden. Außerdem wird veranschaulicht, wie sie die Darstellung einer ListView
Zeile anpassen und die Bedeutung der erneuten Verwendung von Zeilen zur Reduzierung des Arbeitsspeicherverbrauchs erläutert. Es gibt auch einige Diskussionen darüber, wie sich der Aktivitätslebenszyklus auf den Lebenszyklus auswirkt ListView
und Adapter
verwendet. Wenn Sie mit Xamarin.iOS an plattformübergreifenden Anwendungen arbeiten, ist das ListView
Steuerelement strukturell mit dem iOS UITableView
vergleichbar (und das Android Adapter
ähnelt dem UITableViewSource
).
Zunächst wird in einem kurzen Lernprogramm ein ListView
einfaches Codebeispiel vorgestellt. Als Nächstes werden Links zu erweiterten Themen bereitgestellt, die Ihnen bei der Verwendung ListView
in realen Apps helfen.
Hinweis
Das RecyclerView
Widget ist eine komplexere und flexiblere Version von ListView
. Da RecyclerView
es sich um den Nachfolger ListView
von (undGridView
) handelt, empfehlen wir, sie anstelle ListView
der neuen App-Entwicklung zu verwendenRecyclerView
. Weitere Informationen finden Sie unter RecyclerView.
Tutorial „ListView“
ListView
ist ein ViewGroup
erstellt eine Liste mit bildlauffähigen Elementen. Die Listenelemente werden automatisch mithilfe eines IListAdapter
.
In diesem Lernprogramm erstellen Sie eine bildlauffähige Liste mit Land-/Regionsnamen, die aus einem Zeichenfolgenarray gelesen werden. Wenn ein Listenelement ausgewählt ist, zeigt eine Popupmeldung die Position des Elements in der Liste an.
Starten Sie ein neues Projekt mit dem Namen HelloListView.
Erstellen Sie eine XML-Datei mit dem Namen list_item.xml , und speichern Sie sie im Ordner "Ressourcen/Layout/ ". Fügen Sie Folgendes ein:
<?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>
Diese Datei definiert das Layout für jedes Element, das in der ListView
Datei platziert wird.
Öffnen MainActivity.cs
und Ändern der zu erweiternden ListActivity
Klasse (anstelle von Activity
):
public class MainActivity : ListActivity
{
Fügen Sie den folgenden Code für die OnCreate()
) -Methode ein:
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();
};
}
Beachten Sie, dass dadurch keine Layoutdatei für die Aktivität geladen wird (in der Regel mit SetContentView(int)
)).
Legen Sie stattdessen die ListAdapter
eigenschaft fügt automatisch eine ListView
um den gesamten Bildschirm der ListActivity
.
Diese Methode verwendet ein ArrayAdapter<T>
, das das Array von Listenelementen verwaltet, die in die ListView
.
Der ArrayAdapter<T>
Konstruktor verwendet die Anwendung Context
, die Layoutbeschreibung für jedes Listenelement (erstellt im vorherigen Schritt) und ein T[]
oder Java.Util.IList<T>
Array von Objekten, die in das Objekt eingefügt werden sollen ListView
(definiert als Nächstes).
Der TextFilterEnabled
die Textfilterung für den ListView
Benutzer aktiviert, sodass die Liste gefiltert wird, wenn der Benutzer mit der Eingabe beginnt.
Der ItemClick
-Ereignis kann zum Abonnieren von Handlern für Klicks verwendet werden. Wenn ein Element im ListView
wird geklickt, der Handler wird aufgerufen und eine Toast
Die Meldung wird mithilfe des Texts aus dem angeklickten Element angezeigt.
Sie können listenelementdesigns verwenden, die von der Plattform bereitgestellt werden, anstatt Ihre eigene Layoutdatei für die ListAdapter
.
Versuchen Sie Android.Resource.Layout.SimpleListItem1
z. B. anstelle von Resource.Layout.list_item
.
Fügen Sie die folgende using
-Anweisung hinzu:
using System;
Fügen Sie als Nächstes das folgende Zeichenfolgenarray als Element von 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"
};
Dies ist das Array von Zeichenfolgen, die in die ListView
Zeichenfolgen eingefügt werden.
Führen Sie die Anwendung aus. Sie können die Liste scrollen oder sie eingeben, um sie zu filtern, und dann auf ein Element klicken, um eine Nachricht anzuzeigen. Die Ausgabe sollte in etwa wie folgt aussehen:
Beachten Sie, dass die Verwendung eines hartcodierten Zeichenfolgenarrays nicht die bewährte Entwurfsmethode ist. Eine wird in diesem Lernprogramm zur Einfachheit verwendet, um dies zu veranschaulichen ListView
Widget. Es empfiehlt sich, auf ein Zeichenfolgenarray zu verweisen, das von einer externen Ressource definiert wird, z. B. mit einer string-array
Ressource in Der Datei "Ressourcen/Werte/Strings.xml ". Zum Beispiel:
<?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>
Ersetzen Sie zum Verwenden dieser Ressourcenzeichenfolgen für das ArrayAdapter
Original ListAdapter
line with the following:
string[] countries = Resources.GetStringArray (Resource.Array.countries_array);
ListAdapter = new ArrayAdapter<string> (this, Resource.Layout.list_item, countries);
Führen Sie die Anwendung aus. Die Ausgabe sollte in etwa wie folgt aussehen:
Weiter mit ListView
Die themen für die neu Standard erstellung (unten verlinkt) werfen einen umfassenden Überblick über die Arbeit mit der ListView
Klasse und die verschiedenen Typen von Adaptertypen, die Sie damit verwenden können. Die Struktur sieht wie folgt aus:
Visuelle Darstellung – Teile des
ListView
Steuerelements und deren Funktionsweise.Klassen – Übersicht über die Klassen, die zum Anzeigen eines
ListView
.Anzeigen von Daten in einer ListView – So wird's gemacht: Anzeigen einer einfachen Liste von Daten, Implementieren
ListView's
von Benutzerfreundlichkeitsfeatures, Verwendung verschiedener integrierter Zeilenlayouts und Speichern von Speicher durch erneute Verwendung von Zeilenansichten durch Adapter.Benutzerdefinierte Darstellung – Ändern der Formatvorlage mit
ListView
benutzerdefinierten Layouts, Schriftarten und Farben.Verwenden von SQLite – Anzeigen von Daten aus einer SQLite-Datenbank mit einem
CursorAdapter
.Aktivitätslebenszyklus – Entwurfsüberlegungen bei der Implementierung von
ListView
Aktivitäten, einschließlich der Stelle, an der Sie Ihre Daten auffüllen sollten und wann Ressourcen freigegeben werden sollen.
Die Diskussion (unterteilt in sechs Teile) beginnt mit einer Übersicht über die ListView
Klasse selbst, bevor sie schrittweise komplexere Beispiele für die Verwendung einführen.
- ListView-Komponenten und -Funktionen
- Auffüllen einer ListView mit Daten
- Anpassen einer ListView-Darstellung
- Verwenden von CursorAdapters
- Verwenden von ContentProvider
- ListView und der Aktivitätslebenszyklus
Zusammenfassung
Dieser Satz von Themen wurde eingeführt ListView
und enthält einige Beispiele für die Verwendung der integrierten Features der ListActivity
. Es diskutierte benutzerdefinierte Implementierungen, die ListView
für farbige Layouts und die Verwendung einer SQLite-Datenbank zulässig sind, und es wurde kurz auf die Relevanz des Aktivitätslebenszyklus für Ihre ListView
Implementierung eingegangen.