Listview methods in android

Полный список

— используем ListView для построения списка

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

При создании ListView создавать пункты за нас будет адаптер. Адаптеру нужны от нас данные и layout-ресурс пункта списка. Далее мы присваиваем адаптер списку ListView. Список при построении запрашивает у адаптера пункты, адаптер их создает (используя данные и layout) и возвращает списку. В итоге мы видим готовый список.

Есть различные типы списков и адаптеров. Мы пока что рассмотрим простейший вариант.

Project name: P0421_SimpleList
Build Target: Android 2.3.3
Application name: SimpleList
Package name: ru.startandroid.develop.p0421simplelist
Create Activity: MainActivity

Открываем main.xml и добавим на экран компонент ListView (вкладка Composite):

ListView – это и есть компонент списка.

Теперь надо создать адаптер. Открываем MainActivity.java и пишем:

Вы не поверите, но это весь код, необходимый для создания списка )

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

и передали ему следующие параметры:

this – контекст
android.R.layout.simple_list_item_1 – это системный layout-файл, который представляет собой TextView
names – массив данных, которые мы хотим вывести в список

Мы можем посмотреть содержимое использованного simple_list_item_1. Для этого в вашем проекте найдите пункт Android 2.3.3., раскройте его, и раскройте android.jar

Проматывайте в самый низ и открывайте res.layout.

И внутри находим используемый нами simple_list_item_1

Двойной клик на него и смотрим содержимое:

Обычный TextView с набором параметров.

Когда список при формировании запрашивает очередной пункт, адаптер берет этот Layout-ресурс simple_list_item_1, прогоняет его через LayoutInflater и получает View, преобразует View к TextView, присваивает ему текст из массива данных и отдает списку.

Все сохраним и запустим. Видим список из наших данных.

Использование системного layout-ресурса simple_list_item_1 хорошо тем, что нам не надо самим layout рисовать. Однако, если нас не устраивает то, как выглядит список с использованием simple_list_item_1 в качестве пункта списка, мы можем создать свой layout-ресурс.

Создадим layout-файл my_list_item.xml в папке res/layout нашего проекта:

TextView с указанием цвета и размера шрифта, выравнивания текста и отступов.

Изменим существующий код, укажем адаптеру наш созданный layout-ресурс my_list_item:

Теперь адаптер будет использовать его при создании пунктов списка.

Все сохраним и запустим. Видим наш зеленый список:

В layout-ресурсе для пункта списка вместо TextView вы можете использовать какой-нибудь его производный класс – например Button. Главное, чтобы объект прошел преобразование к TextView. Адаптер присвоит ему текст методом setText и отдаст списку.

Читайте также:  Android удалить все сервисы google play

Немного про Context

На одном из прошлых уроков я говорил, что Context (контекст) используется для доступа к базовым функциям приложения. В этом уроке у нас получилось хорошее подтверждение этим словам.

ArrаyAdapter использует LayoutInflater, чтобы конвертнуть layout-ресурс в View. Но получение объекта LayoutInflater – это одна из базовых функций и она недоступна для класса ArrаyAdapter. Поэтому мы в ArrаyAdapter в качестве контекста передаем ссылку на Activity (Activity имеет доступ к базовым функциям через восходящую иерархию классов). А класс ArrayAdapter внутри себя использует переданный ему контекст, чтобы вызвать LayoutInflater. Без контекста он не смог бы это сделать.

На следующем уроке:

— используем список ListView для одиночного и множественного выбора элементов

public ArrayAdapter (Context context, int textViewResourceId, T[] objects)

Присоединяйтесь к нам в Telegram:

— в канале StartAndroid публикуются ссылки на новые статьи с сайта startandroid.ru и интересные материалы с хабра, medium.com и т.п.

— в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Kotlin, RxJava, Dagger, Тестирование

— ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня

— новый чат Performance для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме

Источник

Android ListView Example

android.widget.ListView is widely used in android mobile app. It displays all the list items in the form of a vertical list. This article will show you examples about how to create ListView and how to add item data in it.

1. How To Get A ListView Object.

There are two ways to create a ListView.

  1. Use android.widget.ListView widget directly.
  2. Make your activity class extends android.app.ListActivity. Then you can call it’s setAdapter() method to set item data, and it’s onListItemClick() method is used to response list item click action.

After you get the ListView object, you need to add item data in it through Adapter. There are following Adapters that you can use.

You can even use other adapters, but these three adapters are most used. We will show you above adapter examples later.

2. ListView Properties And Methods.

  1. android:choiceMode : The value can be singleChoice (can only select one item ), multipleChoice( can select multiple item ) or none.
  2. android:divider : It is a color or drawable object id, used to set divider color.
  3. android:dividerHeight : Set the divider height.
  4. android:entries : The value is a array resource id defined in android studio. The array data will be shown in the ListView.
  5. android:headerDividersEnabled : Boolean value, true means draw divider after header view.
  6. android:footerDividersEnabled : Boolean value, true means draw divider before footer view.
  7. setOnItemClickListener() : Set OnItemClickListener object which will response to ListView item click event.

3. ListView ArrayAdapter Example.

If you can not watch the above video, you can see it on the youtube URL https://youtu.be/c5Fv78xCI6M

Читайте также:  Обои для android стандартные

activity_list_view.xml

ListViewActivity.java

Please note the second parameter for ArrayAdapter constructor can have below values.

  1. simple_list_item_1 : Each list item is a TextView object.
  2. simple_list_item_2 : Each list item is a TextView object, text size is bigger.
  3. simple_list_item_checked : Each list item is a checked checkbox.
  4. simple_list_item_single_choice : Display a radio button in the right of each list item. Even it is a radio button, it can be multiple checked if ListView’s android:choiceMode value is multipleChoice.
  5. simple_list_item_multiple_choice : Display a checkbox in the right of each list item. Even it is a checkbox, it can be single checked if ListView’s android:choiceMode value is singleChoice.

4. ListView SimpleAdapter Example.

If you can not watch the above video, you can see it on the youtube URL https://youtu.be/9BYH4Ftclv0

activity_list_view.xml

ListViewActivity.java

Please note the SimpleAdapter creation code. There are 5 parameters in the SimpleAdapter constructor.

  1. First parameter : This is the context object that this SimpleAdapter will be used with.
  2. Second parameter : This is a List > object, each map object in the list represent a ListView item data.
  3. Third parameter : This is the ListView’s item UI component layout xml. It decides which UI components will be shown in each ListView item.
  4. Fourth parameter : This String array contains map object’s keys. Each key related map value will be shown in the ListView item.
  5. Fifth parameter : This int array contains the view object’s resource id in item layout xml file(second parameter specified). Each view object will display related value extracted from map object use keys( fourth parameter specified) by order.

5. ListView Custom SimpleAdapter Example.

This example will customize a SimpleAdapter object which use self defined ListView item layout to add a picture at the beginning of each ListView item.

If you can not watch the above video, you can see it on the youtube URL https://youtu.be/XJOX6qtZuxk

activity_list_view.xml

ListViewActivity.java

6. ListView Custom BaseAdapter Example.

If you still need more customization for ListView item. You can use android.widget.BaseAdapter. Override it’s getCount() and getView() method.

This example set different item row background color and add a button for each item row.

Источник

ListView в Android: Простое использование

Блуждал в Интернете в поисках достойного мануала. Нашел, по моему мнению, достойный, но, как водится в кругах программирования под Android он, конечно же, на английском. Вот и решил привнести свой вклад в распространение мануалов в этой среде на русском. Буду его изучать и, попутно, переводить сюда.

Напомню, что статья является переводом этой статьи с разрешения ее автора.

Продолжение статьи находится здесь. В нем рассматривается кастомизация списков и советы по их оптимизации.

Мануал написан под Android 4, Eclipse 3.7, Java 1.6. Источник можно найти здесь.

Списки — это вещь обычная в современных мобильных устройствах. Мы можем перемещаться по списку и выбирать нужный нам элемент, чтобы открыть что-то. Так и у Андроида он имеется.

Читайте также:  Сброс заводских настроек android что будет

ListActivity

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

ListActivity расширяет Activity, чтобы упростить использование списков. Например, у вас уже будет предопределенный метод, обрабатывающий нажатие на элемент списка.

ListActivity содержит ListAdapter, ответственный за управление содержимым. Адаптер должен быть установлен в методе onCreate() вашей деятельности через метод setListAdapter().

При нажатии на элемент списка вызывается метод onListItemClick(). Этот метод позволяет получить доступ к выбранному элементу.

В Андроиде уже есть некоторые предопределенные шаблоны для использования в Адаптере, например «android.R.layout.simple_list_item1». Если же вы не хотите использовать предопределенный шаблон, ваш шаблон должен иметь идентификатор «@android:id/list», который будет называться ListView. Например:

Так же вы можете использовать вид с id «@android:id/empty». Этот вид отображается, когда список пуст.

Адаптер

Что такое Адаптер?

ListView берет содержимое для отображения через адаптер. Адаптер расширяется классом BaseAdapter и отвечает за модель данных для списка и за расположение этих данных в его элементах.

В Андроиде есть два стандартных адаптера: ArrayAdapter и CursorAdapter. ArrayAdapter управляет данными, основанными на массивах или списках, в то время, как SimpleCursorAdapter управляет содержимым из базы данных. Так же вы можете разработать свой Адаптер, расширяющий эти два класса или же класс BaseAdapter.

Самый важный метод Адаптера — getView(). Он вызывается для каждого элемента списка, чтобы определить как и какие данные должны в нем отображаться. getVew() так же содержит параметр convertView, который позволяет использовать заново уже существующий элемент списка, который уже не отображается, т.к. пользователь пролистнул его с видимой части дисплея. Если convertView не пустой, он может быть использован заново, чтобы не грузить шаблон, что приводит к значительному приросту производительности, т.к. подгрузка XML файла достаточно ресурсоемка.

ListViews и производительность

Отображение большого количества данных на мобильном устройстве должно быть реализовано максимально эффективно. Поэтому ListView создает виды (виджеты) по необходимости и подкрепляет их к иерархии видов. Стандартный Адаптер ListView удаляет виды, например, если элемент больше не отображается, он будет стерт и только его содержимое поменяется. Если вы используете свой адаптер, то вы должны так же предусмотреть это, чтобы избежать проблем с производительностью.

Пример: Простой ListActivity

Сейчас мы создадим максимально простой список. Мы используем стандартный класс Adapter — ArrayAdapter и вид, предопределенный Андроидом.

Создайте новый проект «de.vogella.android.listactivity» с Деятельностью «MyListActivity». Не изменяйте шаблон main.xml. Создайте следующую Деятельность:

Заметьте, что мы не используем setContentView(). ListActivity использует шаблон ListView по-умолчанию, если другой шаблон не задан явно.

По нажатию одного из элементов списка будет выводиться стандартный «Тост» с информацией какой из элементов был выбран.

Прошу прощения за репост. Изначально не отметил как перевод. Большое спасибо jeston за наводку, принял и научился на ошибках.

Источник

Оцените статью