Xamarin.Android ListView

ListView является важным компонентом пользовательского интерфейса приложений Android; он используется везде из коротких списков параметров меню в длинные списки контактов или избранного в Интернете. Он предоставляет простой способ представления прокрутки списка строк, которые можно отформатировать со встроенным стилем или настроить широко.

Обзор

Представления списков и адаптеры включены в наиболее фундаментальные стандартные блоки приложений Android. Класс ListView предоставляет гибкий способ представления данных, будь то короткое меню или длинный список прокрутки. Она предоставляет функции удобства использования, такие как быстрая прокрутка, индексы и один или несколько вариантов, которые помогают создавать удобные для мобильных устройств пользовательские интерфейсы для приложений. Экземпляру ListView требуется адаптер, позволяющий заполнять его данными из представлений строк.

В этом руководстве объясняется, как реализовать ListView и различные Adapter классы в Xamarin.Android. В нем также показано, как настроить внешний вид и обсудить важность повторного ListViewиспользования строк для уменьшения потребления памяти. Существует также некоторое обсуждение того, как жизненный цикл действий влияет и ListViewAdapter используется. Если вы работаете над кроссплатформенными приложениями с Xamarin.iOS, элемент ListView управления структурно похож на iOS UITableView (и Android Adapter похож на ).UITableViewSource

Во-первых, краткое руководство содержит ListView базовый пример кода. Далее приведены ссылки на более сложные разделы, которые помогут вам использовать ListView в реальных приложениях.

Примечание.

Мини-приложение RecyclerView — это более расширенная и гибкая версия ListView. Так как RecyclerView он предназначен для ListViewGridView) рекомендуется использовать RecyclerView вместо ListView разработки новых приложений. Дополнительные сведения см. в разделе RecyclerView.

Учебник по ListView

ListView — это ViewGroup создает список прокручиваемых элементов. Элементы списка автоматически вставляются в список с помощью элемента IListAdapter.

В этом руководстве вы создадите прокручиваемый список имен стран или регионов, которые считываются из строкового массива. При выборе элемента списка всплывающее сообщение отобразит положение элемента в списке.

Запустите новый проект с именем HelloListView.

Создайте XML-файл с именем list_item.xml и сохраните его в папке Resources/Layout/ . Вставьте следующее:

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

Откройте MainActivity.cs и измените класс для расширения ListActivity (вместо Activity):

public class MainActivity : ListActivity
{

Вставьте следующий код для OnCreate()метода ):

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))). Вместо этого настройте ListAdapter свойство автоматически добавляет ListView для заполнения всего экрана ListActivity. Этот метод принимает объектArrayAdapter<T>, который управляет массивом элементов списка, которые будут помещены в .ListView Токен ArrayAdapter<T>конструктор принимает приложениеContext, описание макета для каждого элемента списка (созданного на предыдущем шаге), а также или T[]Java.Util.IList<T> массив объектов для вставки в ListView (определено далее).

Токен TextFilterEnabled свойство включает фильтрацию текста для объекта ListView, чтобы при начале ввода пользователя список будет отфильтрован.

Токен ItemClick событие можно использовать для подписки обработчиков щелчков. Когда элемент в элементе ListView Щелкается, вызывается обработчик и Toast отображается сообщение с помощью текста из щелкнутого элемента.

Вы можете использовать макеты элементов списка, предоставляемые платформой, вместо определения собственного файла макета для объекта ListAdapter. Например, попробуйте использовать Android.Resource.Layout.SimpleListItem1 вместо Resource.Layout.list_item.

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

using System;

Затем добавьте следующий массив строк в качестве члена 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

Запустите приложение. Вы можете прокрутить список или ввести его, а затем щелкнуть элемент, чтобы увидеть сообщение. Отобразятся примерно следующие сведения:

Example screenshot of ListView with country/region names

Обратите внимание, что использование жестко закодированного массива строк не является лучшей практикой проектирования. Он используется в этом руководстве для простоты, чтобы продемонстрировать ListView Виджет. Рекомендуется ссылаться на массив строк, определенный внешним ресурсом, например ресурсом string-array в файле resource /Values/Strings.xml . Например:

<?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, замените исходный ListAdapter строка со следующим кодом:

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

Запустите приложение. Отобразятся примерно следующие сведения:

Example screenshot of ListView with smaller list of names

Дальнейшие действия с ListView

Остальные разделы (связанные ниже) подробно рассматривают работу с ListView классом и различными типами типов адаптеров, которые можно использовать с ним. Его структура выглядит следующим образом.

  • Внешний ListView вид — части элемента управления и принцип их работы.

  • Классы — обзор классов, используемых для отображения ListView.

  • Отображение данных в ListView — отображение простого списка данных; ListView's реализация функций удобства использования; использование различных встроенных макетов строк и сохранение памяти адаптерами путем повторного использования представлений строк.

  • Настраиваемый внешний вид — изменение стиля ListView настраиваемых макетов, шрифтов и цветов.

  • Использование SQLite — отображение данных из базы данных SQLite с помощью .CursorAdapter

  • Жизненный цикл действий — рекомендации по проектированию при реализации ListView действий, в том числе о том, где в жизненном цикле следует заполнить данные и когда следует освободить ресурсы.

Обсуждение (разбитое на шесть частей) начинается с обзора ListView самого класса, прежде чем вводить постепенно более сложные примеры его использования.

Итоги

В этом наборе разделов представлены ListView и приведены некоторые примеры использования встроенных функций.ListActivity В ней обсуждались пользовательские реализации, которые позволили использовать красочные макеты ListView и использовать базу данных SQLite, и она кратко коснулась релевантности жизненного цикла действий в реализации ListView .