ListViewListView

ListView является достаточно важным элементом пользовательского интерфейса приложений Android; он используется везде из кратких списков из меню параметров для длинные списки контактов или "Избранное" internet. Он предоставляет простой способ для представления прокручиваемого списка строк, которые могут быть в формате с помощью встроенного стиля или настроить разными способами.ListView is an important UI component of Android applications; it is used everywhere from short lists of menu options to long lists of contacts or internet favorites. It provides a simple way to present a scrolling list of rows that can either be formatted with a built-in style or customized extensively.

ОбзорOverview

Представления списка и адаптеры включены в наиболее основные стандартные блоки приложений Android.List views and adapters are included in the most fundamental building blocks of Android Applications. ListView Класс предоставляет гибкий способ представления данных, будь то контекстного меню или прокручиваемого списка.The ListView class provides a flexible way to present data, whether it is a short menu or a long scrolling list. Он предоставляет удобные функции например прокрутки, индексирует и выбора одного или нескольких для построения мобильной пользовательские интерфейсы для приложений.It provides usability features like fast scrolling, indexes and single or multiple selection to help you build mobile-friendly user interfaces for your applications. Экземпляру ListView требуется адаптер, позволяющий заполнять его данными из представлений строк.A ListView instance requires an Adapter to feed it with data contained in row views.

В этом руководстве объясняется, как реализовать ListView и различных Adapter классы в Xamarin.Android.This guide explains how to implement ListView and the various Adapter classes in Xamarin.Android. Он также демонстрирует способы настройки внешнего вида ListView, и он обсуждается Важность повторного использования строки для снижения потребления памяти.It also demonstrates how to customize the appearance of a ListView, and it discusses the importance of row re-use to reduce memory consumption. Есть также некоторые обсуждение влияние на жизненный цикл действия ListView и Adapter использовать.There is also some discussion of how the Activity Lifecycle affects ListView and Adapter use. Если вы работаете над кросс платформенных приложений с помощью Xamarin.iOS, ListView управления структурно аналогичные iOS UITableView (и Android Adapter аналогичен UITableViewSource).If you are working on cross-platform applications with Xamarin.iOS, the ListView control is structurally similar to the iOS UITableView (and the Android Adapter is similar to the UITableViewSource).

Во-первых, представляет краткий учебник ListView с примера базовый код.First, a short tutorial introduces the ListView with a basic code example. Далее приведены ссылки на дополнительные разделы по использованию ListView в реальных приложениях.Next, links to more advanced topics are provided to help you use ListView in real-world apps.

Примечание

RecyclerView Мини-приложение представляет собой более сложных и гибкую версию ListView.The RecyclerView widget is a more advanced and flexible version of ListView. Так как RecyclerView должна быть преемником ListViewGridView), мы рекомендуем использовать RecyclerView вместо ListView для разработки новых приложений.Because RecyclerView is designed to be the successor to ListView (and GridView), we recommend that you use RecyclerView rather than ListView for new app development. Дополнительные сведения см. в разделе RecyclerView.For more information, see RecyclerView.

Учебник по ListViewListView Tutorial

ListViewViewGroupListView is a ViewGroup Создает список элементов для прокрутки.that creates a list of scrollable items. Элементы списка автоматически вставляются в список с помощью IListAdapter .The list items are automatically inserted to the list using a IListAdapter.

В этом руководстве вы создадите прокручиваемый список названия стран, которые считываются из массива строк.In this tutorial, you'll create a scrollable list of country names that are read from a string array. При выборе элемента списка, появляется всплывающее сообщение позицию элемента в списке.When a list item is selected, a toast message will display the position of the item in the list.

Создайте новый проект с именем HelloListView.Start a new project named HelloListView.

Создание XML-файл с именем list_item.xml и сохраните его в ресурсы/макета/ папки.Create an XML file named list_item.xml and save it inside the Resources/Layout/ folder. Вставьте следующее:Insert the following:

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

Этот файл определяет макет для каждого элемента, который будет помещен в ListView .This file defines the layout for each item that will be placed in the ListView.

Откройте MainActivity.cs и измените класс для расширения ListActivity (а не Activity ):Open MainActivity.cs and modify the class to extend ListActivity (instead of Activity):

public class MainActivity : ListActivity
{

Вставьте следующий код для OnCreate()Insert the following code for the OnCreate() метод:method:

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

Обратите внимание на то, что это не загружает файл макета для действия (это обычно делается с SetContentView(int) ).Notice that this does not load a layout file for the Activity (which you usually do with SetContentView(int)). Вместо этого параметр ListAdapterInstead, setting the ListAdapter автоматически добавляет свойство ListViewproperty automatically adds a ListView во весь экран из ListActivity .to fill the entire screen of the ListActivity. Этот метод принимает ArrayAdapter<T> , который управляет массив элементов списка, которые будут помещены в ListView .This method takes an ArrayAdapter<T>, which manages the array of list items that will be placed into the ListView. В ArrayAdapter<T>The ArrayAdapter<T> Конструктор принимает приложения Context , описание макета для каждого элемента списка (созданный на предыдущем шаге) и T[] или Java.Util.IList<T>constructor takes the application Context, the layout description for each list item (created in the previous step), and a T[] or Java.Util.IList<T> Массив объектов для вставки в ListViewarray of objects to insert in the ListView (определение приводится ниже.)(defined next).

В TextFilterEnabledThe TextFilterEnabled Фильтрация для текста включает свойство ListView , таким образом, когда пользователь начинает ввод, список будет отфильтрован.property turns on text filtering for the ListView, so that when the user begins typing, the list will be filtered.

В ItemClickThe ItemClick событие можно подписаться обработчики для щелчков мышью.event can be used to subscribe handlers for clicks. Когда элемент в ListViewWhen an item in the ListView является нажатии обработчик вызывается и Toastis clicked, the handler is called and a Toast отображается сообщение, на основе текста щелкнутого элемента.message is displayed, using the text from the clicked item.

Можно использовать схемы элемента списка, предоставляемых платформой вместо определения свой собственный файл макета для ListAdapter .You can use list item designs provided by the platform instead of defining your own layout file for the ListAdapter. Например, попробуйте использовать Android.Resource.Layout.SimpleListItem1 вместо Resource.Layout.list_item.For example, try using Android.Resource.Layout.SimpleListItem1 instead of Resource.Layout.list_item.

Добавьте следующий using инструкции:Add the following using statement:

using System;

Добавьте следующий массив строк как член MainActivity:Next, add the following string array as a member of 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"
  };

Это массив строк, которые будут помещены в ListView .This is the array of strings that will be placed into the ListView.

Запустите приложение.Run the application. Можно в списке или ввести отфильтровать их, затем щелкните элемент, чтобы просмотреть сообщение.You can scroll the list, or type to filter it, then click an item to see a message. Результат должен быть примерно таким:You should see something like this:

Пример снимка экрана с ListView с названия странExample screenshot of ListView with country names

Обратите внимание, что с помощью жестко строковый массив не является рекомендуемым способом разработки.Note that using a hard-coded string array is not the best design practice. Один используется в этом руководстве для простоты для демонстрации ListViewOne is used in this tutorial for simplicity, to demonstrate the ListView мини-приложение.widget. Наилучшим решением будет ссылаться на массив строк, определенного внешнего ресурса, например со string-array ресурсов в проекте Resources/Values/Strings.xml файла.The better practice is to reference a string array defined by an external resource, such as with a string-array resource in your project Resources/Values/Strings.xml file. Пример:For example:

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

Для использования этих ресурсов строк для ArrayAdapter , замены исходного ListAdapterTo use these resource strings for the ArrayAdapter, replace the original ListAdapter Строка со следующими:line with the following:

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

Запустите приложение.Run the application. Результат должен быть примерно таким:You should see something like this:

Пример снимка экрана с ListView с помощью меньшего размера список именExample screenshot of ListView with smaller list of names

Продвигаясь дальше с ListViewGoing Further with ListView

Остальные разделы (ссылка ниже) воспользоваться исчерпывающие работа с ListView класс и различные типы типы адаптеров, которые можно использовать с ним.The remaining topics (linked below) take a comprehensive look at working with the ListView class and the different types of Adapter types you can use with it. Эта структура выглядит следующим образом:The structure is as follows:

  • Внешний вид – части ListView управления и как они работают.Visual Appearance – Parts of the ListView control and how they work.

  • Классы – Общие сведения о классах, используемый для отображения ListView.Classes – Overview of the classes used to display a ListView.

  • Отображение данных в ListView – как для отображения простой список данных, как реализовать ListView's удобные функции; как использовать различные встроенные строки макеты; и как адаптеры освободить память, повторное использование представлений строк.Displaying Data in a ListView – How to display a simple list of data; how to implement ListView's usability features; how to use different built-in row layouts; and how Adapters save memory by re-using row views.

  • Пользовательское оформление – изменять стиль ListView пользовательские макеты, шрифты и цвета.Custom appearance – Changing the style of the ListView with custom layouts, fonts and colors.

  • С помощью SQLite – способ отображения данных из базы данных SQLite с CursorAdapter.Using SQLite – How to display data from a SQLite database with a CursorAdapter.

  • Жизненный цикл действия – рекомендации по проектированию при реализации ListView действий, в том числе, где в жизненном цикле необходимо заполнить данные и когда следует освободить ресурсы.Activity Lifecycle – Design considerations when implementing ListView Activities, including where in the lifecycle you should populate your data and when to release resources.

Обсуждение (разбить на части шесть) начинается с обзором ListView сам по себе класс перед тем как представить все более сложные примеры его использования.The discussion (broken into six parts) begins with an overview of the ListView class itself before introducing progressively more complex examples of how to use it.

СводкаSummary

Этот набор разделов появился ListView и приведены некоторые примеры того, как использовать встроенные функции ListActivity.This set of topics introduced ListView and provided some examples of how to use the built-in features of the ListActivity. Это обсуждалось пользовательские реализации ListView , отводимое цветных макеты и использует базу данных SQLite и кратко рассмотрели релевантность жизненный цикл действия вашей ListView реализации.It discussed custom implementations of ListView that allowed for colorful layouts and using an SQLite database, and it briefly touched on the relevance of the activity lifecycle on your ListView implementation.