Xamarin.Android ListView
ListView to ważny składnik interfejsu użytkownika aplikacji systemu Android; Jest on używany wszędzie z krótkich list opcji menu do długich list kontaktów lub ulubionych internetowych. Zapewnia prosty sposób prezentowania listy przewijania wierszy, które można sformatować za pomocą wbudowanego stylu lub dostosowanego w szerokim zakresie.
Omówienie
Widoki listy i karty są zawarte w najbardziej podstawowych blokach konstrukcyjnych aplikacji systemu Android. Klasa ListView
zapewnia elastyczny sposób prezentowania danych, niezależnie od tego, czy jest to krótkie menu, czy długa lista przewijania. Zapewnia funkcje użyteczności, takie jak szybkie przewijanie, indeksy i pojedynczy lub wielokrotny wybór, które ułatwiają tworzenie przyjaznych dla urządzeń przenośnych interfejsów użytkownika dla aplikacji. Wystąpienie ListView
wymaga adaptera, aby nakarmić go danymi zawartymi w widokach wierszy.
W tym przewodniku wyjaśniono, jak zaimplementować ListView
różne Adapter
klasy w środowisku Xamarin.Android. Przedstawiono również sposób dostosowywania wyglądu obiektu ListView
i omawia znaczenie ponownego użycia wiersza w celu zmniejszenia zużycia pamięci. Istnieje również kilka dyskusji na temat wpływu cyklu życia działania na ListView
i Adapter
wykorzystania. Jeśli pracujesz nad aplikacjami dla wielu platform za pomocą platformy Xamarin.iOS, kontrolka ListView
jest strukturalnie podobna do systemu iOS UITableView
(a system Android Adapter
jest podobny do ).UITableViewSource
Najpierw krótki samouczek zawiera wprowadzenie do ListView
podstawowego przykładu kodu. Następnie dostępne są linki do bardziej zaawansowanych tematów, które ułatwiają korzystanie z ListView
aplikacji rzeczywistych.
Uwaga
Widżet RecyclerView
jest bardziej zaawansowaną i elastyczną wersją programu ListView
. Ponieważ RecyclerView
jest przeznaczony jako następca ListView
(i GridView
), zalecamy użycie RecyclerView
, a nie ListView
do tworzenia nowych aplikacji. Aby uzyskać więcej informacji, zobacz RecyclerView.
Samouczek dotyczący obiektu ListView
ListView
jest ViewGroup
tworzy listę elementów przewijanych. Elementy listy są automatycznie wstawiane do listy przy użyciu elementu IListAdapter
.
W tym samouczku utworzysz przewijaną listę nazw krajów/regionów odczytywanych z tablicy ciągów. Po wybraniu elementu listy zostanie wyświetlony wyskakujące komunikat o pozycji elementu na liście.
Uruchom nowy projekt o nazwie HelloListView.
Utwórz plik XML o nazwie list_item.xml i zapisz go w folderze Resources/Layout/ . Wstaw następujące elementy:
<?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>
Ten plik definiuje układ dla każdego elementu, który zostanie umieszczony w obiekcie ListView
.
Otwórz MainActivity.cs
i zmodyfikuj klasę w celu rozszerzenia ListActivity
(zamiast Activity
):
public class MainActivity : ListActivity
{
Wstaw następujący kod dla OnCreate()
metody ) :
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();
};
}
Zwróć uwagę, że nie powoduje to załadowania pliku układu dla działania (zwykle wykonywanego za pomocą SetContentView(int)
polecenia )).
Zamiast tego należy ustawić ListAdapter
właściwość automatycznie dodaje ListView
aby wypełnić cały ekran obiektu ListActivity
.
Ta metoda przyjmuje klasę ArrayAdapter<T>
, która zarządza tablicą elementów listy, które zostaną umieszczone w obiekcie ListView
.
Standard ArrayAdapter<T>
konstruktor przyjmuje aplikację Context
, opis układu dla każdego elementu listy (utworzony w poprzednim kroku) i lub T[]
Java.Util.IList<T>
tablica obiektów do wstawienia w obiekcie ListView
(zdefiniowane dalej).
Standard TextFilterEnabled
właściwość włącza filtrowanie tekstu dla elementu , aby po rozpoczęciu ListView
wpisywania przez użytkownika lista została odfiltrowana.
Standard ItemClick
zdarzenie może służyć do subskrybowania procedur obsługi kliknięć. Gdy element w elemencie ListView
jest klikany, wywoływana jest procedura obsługi i Toast
zostanie wyświetlony komunikat przy użyciu tekstu z klikniętego elementu.
Można użyć projektów elementów listy udostępnianych przez platformę zamiast definiowania własnego pliku układu dla elementu ListAdapter
.
Na przykład spróbuj użyć polecenia Android.Resource.Layout.SimpleListItem1
zamiast Resource.Layout.list_item
.
Dodaj następującą using
instrukcję:
using System;
Następnie dodaj następującą tablicę ciągów jako element członkowski :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"
};
Jest to tablica ciągów, które zostaną umieszczone w obiekcie ListView
.
Uruchom aplikację. Możesz przewinąć listę lub wpisać, aby ją filtrować, a następnie kliknąć element, aby wyświetlić komunikat. Powinny zostać wyświetlone informacje podobne do następujących:
Należy pamiętać, że używanie tablicy ciągów zakodowanych w kodzie nie jest najlepszym rozwiązaniem projektowym. Jeden z nich jest używany w tym samouczku dla uproszczenia, aby zademonstrować ListView
Widget. Lepszym rozwiązaniem jest odwołanie do tablicy ciągów zdefiniowanej przez zasób zewnętrzny, taki jak zasób string-array
w pliku Resources/Values/Strings.xml projektu. Na przykład:
<?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>
Aby użyć tych ciągów zasobów dla ArrayAdapter
elementu , zastąp oryginalny ciąg ListAdapter
wiersz z następującymi elementami:
string[] countries = Resources.GetStringArray (Resource.Array.countries_array);
ListAdapter = new ArrayAdapter<string> (this, Resource.Layout.list_item, countries);
Uruchom aplikację. Powinny zostać wyświetlone informacje podobne do następujących:
Dalsze przechodzenie do obiektu ListView
Pozostałe tematy (połączone poniżej) przedstawiają kompleksową pracę z klasą ListView
i różnymi typami kart, których można używać. Struktura jest następująca:
Wygląd wizualizacji — części kontrolki
ListView
i sposób ich działania.Klasy — omówienie klas używanych do wyświetlania klasy
ListView
.Wyświetlanie danych w widoku ListView — jak wyświetlić prostą listę danych; jak zaimplementować
ListView's
funkcje użyteczności, jak używać różnych wbudowanych układów wierszy oraz jak adaptery zapisują pamięć przy użyciu widoków wierszy.Wygląd niestandardowy — zmiana stylu
ListView
obiektu za pomocą niestandardowych układów, czcionek i kolorów.Using SQLite — jak wyświetlać dane z bazy danych SQLite za pomocą elementu
CursorAdapter
.Cykl życia działania — zagadnienia dotyczące projektowania podczas implementowania
ListView
działań, w tym miejsce, w którym należy wypełnić dane i kiedy należy zwolnić zasoby.
Dyskusja (podzielona na sześć części) rozpoczyna się od omówienia ListView
samej klasy przed wprowadzeniem stopniowo bardziej złożonych przykładów sposobu jej używania.
- Elementy i funkcje obiektu ListView
- Wypełnianie obiektu ListView przy użyciu danych
- Dostosowywanie wyglądu obiektu ListView
- Używanie obiektu CursorAdapters
- Używanie obiektu ContentProvider
- Obiekt ListView i cyklem życia aktywności
Podsumowanie
W tym zestawie tematów przedstawiono ListView
i podano kilka przykładów używania wbudowanych funkcji programu ListActivity
. Omówiła niestandardowe implementacje ListView
, które są dozwolone dla kolorowych układów i korzystania z bazy danych SQLite, i krótko dotknęła istotności cyklu życia działania w ListView
implementacji.