Mam konfigurację SearchManager
, w której lista sugestii będzie wyświetlana w miarę pisania przez użytkownika. Wyniki pochodzą z mojego serwera (http). Chciałbym wyświetlić ikonę z każdą opcją (jeśli plik faktycznie istnieje).Używanie adresu URL strony internetowej dla SUGGEST_COLUMN_ICON_1 dla sugestii wyszukiwania
Patrząc na docs, widzę możliwości stałej kolumnie SUGGEST_COLUMN_ICON_1
umożliwia opcji:
Column name for suggestions cursor. Optional. If your cursor includes this column, then all suggestions will be provided in a format that includes space for two small icons, one at the left and one at the right of each suggestion. The data in the column must be a resource ID of a drawable, or a URI in one of the following formats:
content (SCHEME_CONTENT)
android.resource (SCHEME_ANDROID_RESOURCE)
file (SCHEME_FILE)
Wszystko co mam to URL. Która opcja będzie dla mnie najlepsza?
Oto class
gdzie robie to:
public class MyCustomSuggestionProvider extends SearchRecentSuggestionsProvider {
public static final String AUTHORITY = "---.MyCustomSuggestionProvider";
public static final int MODE = DATABASE_MODE_QUERIES;
private final static String[] COLUMN_NAMES = {BaseColumns._ID,
SearchManager.SUGGEST_COLUMN_TEXT_1,
SearchManager.SUGGEST_COLUMN_TEXT_2,
SearchManager.SUGGEST_COLUMN_QUERY,
SearchManager.SUGGEST_COLUMN_INTENT_DATA,
SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA,
SearchManager.SUGGEST_COLUMN_ICON_1,
SearchManager.SUGGEST_COLUMN_INTENT_ACTION};
public MyCustomSuggestionProvider() {
setupSuggestions(AUTHORITY, MODE);
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
Cursor recentCursor = super.query(uri, projection, selection,
selectionArgs, sortOrder);
String query = selectionArgs[0];
if (query == null || query.length() < 3) {
return recentCursor;
}
final MatrixCursor customCursor = new MatrixCursor(COLUMN_NAMES);
// Get web results from Retrofit Library
List<TheProfile> suggestions = RestClient.get().getCustomSearch(query, MyApp.getUserId());
for (TheProfile suggestion : suggestions) {
Uri searchIconUri = Uri.parse("http:/---/profile_images/" + String.valueOf(suggestion.id) + ".png");
try {
customCursor.addRow(new Object[]{
suggestion.id, suggestion.profile, suggestion.subcategory, suggestion.profile, suggestion.profile, suggestion.subcategory, searchIconUri, "android.intent.action.SEARCH"});
} catch (Exception e) {
e.printStackTrace();
}
}
return customCursor;
}
}
Prawdziwa historia: Po raz kolejny przeszukałem to samo pytanie, znalazłem tę stronę i zaimplementowałem to rozwiązanie. Działa świetnie. Cóż, głównie. Częścią problemu jest to, że to, co mi zostało, to to, czego potrzebuję .placeholder() i nie wymyśliłem jeszcze, by pracować z powyższym. Ale dostaję obrazy. Zastanawiałem się, dlaczego to nie jest oznaczone jako poprawne. Wtedy zauważyłem, że to ja zadałem to pytanie! Cóż, dwa lata później zaznaczam to poprawnie. Przepraszam za opóźnienie ;) – KickingLettuce