Главная » Разработка для Android » Виджет быстрого поиска и добавление поисковых возможностей в свое приложение

0

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

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

Добавление в приложение поисковых возможностей

Большинство устройств под управлением Android оснащены аппаратной кнопкой поиска. Используя данный фреймворк, можно задействовать спец- ифические для вашего приложения поисковые возможности, если пользова- тель нажал эту кнопку. Поисковая строка будет динамически отображать результаты по мере ввода поискового запроса.

Создание Активности для поиска

Чтобы в вашем приложении можно было вести поиск, необходимо создать

Активность, которая станет инициировать и отображать процесс поиска.

Сперва нужно создать новый поисковый ресурс с метаданными в форма- те XML и разместить его в каталоге res/xml. Этот файл, показанный в листин- ге 10.18, описывает полномочия Источника данных, в котором вы планируете вести поиск, а также действие, которое будет вызвано, если пользователь нажмет на поисковый  результат.

Листинг 10.18. Описание  поисковых  метаданных для приложения

<searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="@string/app_name" android:searchSuggestAuthority="myauthority" android:searchSuggestIntentAction="android.intent.action.VIEW">

</searchable>

Далее нужно создать Активность, которая задействуется для вывода ре- зультатов  поиска. Как правило, в этой роли выступает простая Активность, основанная  на элементе  ListView, но вы при необходимости можете раз- работать любой пользовательский интерфейс.  На примере листинга 10.19 добавьте внутрь тег <meta-data>, который имеет атрибут name со значе- нием android.app.searchable и атрибут resource, ссылающийся на ресурс, созданный  в листинге 10.18.

Вы также должны добавить Фильтр намерений, зарегистрированный для действия  android.intent.action.SEARCH, и категорию DEFAULT.

Листинг 10.19. Регистрация Активности для отображения результатов поиска

<activity android:name=".EarthquakeSearch" android:label="Earthquake

Search">

<intent-filter>

<action android:name="android.intent.action.SEARCH" />

<category android:name="android.intent.category.DEFAULT" />

</intent-filter>

<meta-data android:name="android.app.searchable" android:resource="@xml/searchable"

/>

</activity>

Поисковый запрос, который  приведет  к отображению  данной  Актив- ности, будет возвращен  внутрь Намерения с помощью параметра  extra под названием SearchMananger.USER_QUERY, как показано ниже:

String searchTerm = getIntent().getStringExtra(SearchManager.USER_QUERY);

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

<meta-data> в манифест приложения, как показано в листинге 10.20.

Присвойте атрибуту name значение android.app.default_searchable и ука- жите вашу Активность для вывода поисковых результатов, используя атри- бут value.

Листинг 10.20. Установка  Активности,  которая по умолчанию выводит результаты поиска для приложения

<meta-data android:name="android.app.default_searchable" android:value=".EarthquakeSearch"

/>

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

По теме:

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