Главная » Разработка для Android » Использование Адаптеров для привязки данных

0

Чтобы  применить  Адаптер к классу, основанному  на AdapterView, не- обходимо вызвать  из Представления метод setAdapter, как показано  в ли- стинге 5.24.

Листинг 5.24. Создание и применение Адаптера

ArrayList<String> myStringArray = new ArrayList<String>(); ArrayAdapter<String> myAdapterInstance;

int layoutID = android.R.layout.simple_list_item_1; myAdapterInstance = new ArrayAdapter<String>(this, layoutID , myStringArray);

myListView.setAdapter(myAdapterInstance);

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

В первом из последующих  примеров  показано,  как привязать массив сложных  объектов  к элементу  ListView,  использующему нестандарт- ную разметку. Во втором продемонстрировано использование Адаптера SimpleCursorAdapter для привязки результатов запроса  к нестандартной разметке внутри ListView.

Настройка Адаптера на примере проекта To-Do List

Данный пример1 расширяет возможности проекта To-Do List, позволяя хранить все элементы списка в виде объектов ToDoItem, содержащих  дан- ные для каждого из них.

Нужно расширить класс ArrayAdapter, чтобы привязать набор объектов ToDoItem к элементу  ListView,  и изменить  разметку,  используемую для отображения каждого элемента списка.

1. Вернемся  к проекту  To-Do  List. Создайте  новый  класс ToDoItem, который  хранит задачу и время ее создания.  Переопределите метод toString, чтобы возвращать  совокупность  данных, содержащихся в элементе.

package com.paad.todolist;

import java.text.SimpleDateFormat;

import java.util.Date;

Рис. 5.4.

Использование SimpleCursorAdapter

SimpleCursorAdapter позволяет  привязать Курсор к элементу  ListView, используя собственное  описание  разметки,  чтобы определить  способ

отображения для каждой строки/элемента, которые заполняются данными из соответствующих столбцов.

Создайте  экземпляр SimpleCursorAdapter, передав в его конструктор текущий контекст, ресурс с разметкой, Курсор и два массива: первый будет содержать  названия используемых столбцов, второй (с той же размерно- стью) — идентификаторы ресурсов Представлений, применяемых для ото- бражения  содержимого  соответствующих столбцов.

В листинге 5.25 показано, как создать SimpleCursorAdapter для отобра- жения контактной информации.

Листинг 5.25. Создание SimpleCursorAdapter

String uriString = "content://contacts/people/";

Cursor myCursor = managedQuery(Uri.parse(uriString), null, null, null); String[] fromColumns = new String[] {People.NUMBER, People.NAME};

int[] toLayoutIDs = new int[] { R.id.nameTextView, R.id.numberTextView};

SimpleCursorAdapter myAdapter;

myAdapter = new SimpleCursorAdapter(this, R.layout.simplecursorlayout, myCursor,

fromColumns, toLayoutIDs);

myListView.setAdapter(myAdapter);

Ранее в этой главе SimpleCursorAdapter использовался в примере Contact Picker. В главе 7 вы подробнее познакомитесь с Источниками данных и Курсо- рами, а также найдете больше примеров применения SimpleCursorAdapter.

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии