}

}

Ваша адресная книга может использовать этот новый компаратор для лексикографической сортировки списка имен, извлеченных из хранилища записей. Например, чтобы отсортировать имена, выведенные поиском, вы просто создаете экземпляр вашего нового компаратора и пересылаете его как второй аргумент в вызов enumerateRecords (). Следующий фрагмент кода, показанный в листинге 7.5, является новой версией вызова метода getMatchesByName(String matchKey) в классе AddressBook.

Листинг 7.5. Чтобы осуществить сортировку, просто перешлите экземпляр компаратора в вызов списка записей из хранилища записей. Различные списки могут определять различную политику сортировки

RecordEnumeration getMatchesByName(String matchKey)

throws RecordStoreNotOpenException

{

MatchAllNaraesFilter filter =

new MatchAHNamesFilter (matchKey);

AlphabeticalOrdering comparator =

new AlphabeticalOrdering();

return recordStore.enumerateRecords(filter,

comparator, false);

}

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

Блоки прослушивания записей

Приложения имеют способность получать уведомления при добавлении записи, ее удалении или изменении в хранилище записей. Класс RecordStore позволяет вам добавлять и удалять блоки прослушивания записей из определенного хранилища данных с помощью методов, перечисленных в таблице 7.2. Блок прослушивания записей является любым классом, реализующим интерфейс RecordListener, определенный в пакете javax.microedition.rms. Он объявляет три метода, показанных в таблице 7.3.

Таблица 7.2. Методы поддержки блока прослушивания событий RecordStore

Название метода RecordStore — Описание

Void addRecordListener (RecordListener listener) — Делает указанный объект блоком прослушивания для данного хранилища записей

Void removeRecordListener (RecordListener listener) — Удаляет указанный блок прослушивания как блок прослушивания данного хранилища записей

Таблица 7.3. Методы интерфейса RecordListener

Название метода RecordListener — Описание

void recordAdded (RecordStore recordStore, int recordld) — Уведомляет блок прослушивания записей о том, что запись была добавлена в указанное хранилище записей с указанным ID

void recordChanged (RecordStore recordStore, int recordld) — Уведомляет блок прослушивания записей о том, что запись с указанным ID была изменена в хранилище записей

void recordDeleted (RecordStore recordStore, int recordld) — Уведомляет блок прослушивания записей о том, что запись с указанным ID была удалена из хранилища записей

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

Различные свойства хранилищ записей

Класс RecordStore определяет несколько других свойств, которые полезны для приложений. В таблице 7.4 перечислены некоторые из других методов класса RecordStore и кратко описано их использование.

Таблица 7.4. Методы класса RecordStore

Название метода — Описание

void closeRecordStore () — Закрывает хранилище записей

static void deleteRecordStore () — Удаляет хранилище записей

long getLastModified () — Выдает время последней модификации

String getName () — Выдает название хранилища записей

int getNumRecords () — Выдает число записей в хранилище

byte [] getRecordfint recordl () — Извлекает запись по Ю

byte [] getRecord(int recordld, byte [] buffer, int offset) — Получает запись и помещает ее в предоставленный буфер

byte [] getRecordSize (int recordld) — Получает размер указанной записи

int getSize () — Выдает размер места (в байтах), которое занимает хранилище записей

int getSizeAvailable () — Выдает число оставшихся байтов, на которое хранилище записей может вырасти

int getVersion() — Выдает номер версии хранилища записей

static String [] listRecordStores () — Выдает список всех хранилищ записей,

Вы читаете Платформа J2Me
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату