格式化来自内容提供商的游标中提供的自定义搜索建议的文本

时间:2013-09-19 08:52:51

标签: android search

我有一个搜索框设置,通过ContentProvider提供自定义搜索建议。这些建议是通过调用Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)方法收集的Android搜索建议API处理的。当在光标中返回建议时,它们将显示在搜索框下方的列表中。

我的问题是我想在每个搜索建议粗体中创建一个子字符串。我在这些子字符串周围添加了HTML粗体标记<b></b>。但是,即使我将Html.fromHtml(stringWithBoldTags)添加到返回的Cursor(MatrixCursor),文本也都显示为纯文本。

我想知道是否有一种方法可以使用搜索建议API将某些文本加粗。我不想完全重新设置搜索建议,因此只需要进行这一小改动,就可以实现我自己的搜索建议API。

public Cursor query(Uri uri, String[] projection, String selection,
                    String[] selectionArgs, String sortOrder) {
    List<String> suggestions = getSuggestions(searchTerm);

    MatrixCursor cursor = new MatrixCursor(new String[] { BaseColumns._ID, 
                  SearchManager.SUGGEST_COLUMN_TEXT_1, 
                  SearchManager.SUGGEST_COLUMN_INTENT_DATA, 
                  SearchManager.SUGGEST_COLUMN_QUERY } );
    for (int i = 0; i < suggestions.size(); ++i) {
        String suggestion = suggestions.get(i);
        Object[] row = { Integer.toString(i), 
                         Html.fromHtml(makeSubstringBold(suggestion, searchTerm)),
                         suggestion, suggestion };
        cursor.addRow(row);
    }
    return cursor;
}

private List<String> getSuggestions(String searchTerm) {
    // Return a list of suggestions for the searchTerm
}

private String makeSubstringBold(String fullString, String substring) {
    // Find substring in fullString and add HTML bold tags either side of it
}

如果有人知道您可以使搜索建议API遵循光标中返回的粗体标签,那么我将非常感激!

0 个答案:

没有答案