У меня есть собственный поставщик поисковых предложений для SearchView
моего приложения. Предложения отображаются нормально, но имена предложений жестко закодированы. Я хотел бы получить локализованные строки из моего файла strings.xml
, но мне нужен доступ к контексту активности, которого нет в моей поисковой системе.
Мой поисковый провайдер сопоставляется с моим SearchView
с помощью файла searchables.xml
, как это рекомендовано в документации для разработчиков Android. Вот моя конфигурация с возможностью поиска:
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:hint="artist, track informations..."
android:label="@string/app_name"
android:queryAfterZeroResults="true"
android:searchSuggestAuthority="com.example.testapp.providers.QuickSearchProvider"
android:searchSuggestSelection=" ?"
android:searchSuggestThreshold="3" />
...и вот собственно поисковый провайдер:
public class QuickSearchProvider extends SearchRecentSuggestionsProvider {
public final static String AUTHORITY = "com.example.testapp.providers.QuickSearchProvider";
public final static int MODE = DATABASE_MODE_QUERIES | DATABASE_MODE_2LINES;
public QuickSearchProvider() {
setupSuggestions(AUTHORITY, MODE);
}
public Cursor query(Uri uri, String[] projection, String sel,
String[] selArgs, String sortOrder) {
MatrixCursor cursor = new MatrixCursor(new String[] {
BaseColumns._ID,
SearchManager.SUGGEST_COLUMN_TEXT_1,
SearchManager.SUGGEST_COLUMN_TEXT_2,
SearchManager.SUGGEST_COLUMN_ICON_1,
SearchManager.SUGGEST_COLUMN_INTENT_ACTION});
cursor.addRow(new Object[] { 0, "Plants", "Search Plants", android.R.drawable.ic_menu_search, Search.SEARCH_PLANTS_ACTION});
cursor.addRow(new Object[] { 1, "Birds", "Search Birds", android.R.drawable.ic_menu_search, Search.SEARCH_BIRDS_ACTION });
return new MergeCursor(new Cursor[] { cursor });
}
}
Я хотел бы получить локализованные строки из моего файла строковых ресурсов для таких терминов, как «Растения» и «Птицы».
Как я могу это сделать?
Спасибо.