android - 不显示最近的搜索,显示自定义建议

标签 android search-suggestion

我有一个搜索小部件 (SearchView),在键入时显示自定义建议。我关注了official guide将最近的查询添加到建议中,但我仍然只有自定义建议。
对于每次搜索,我的 fragment 调用此函数(已验证):

private void addQueryToRecent(String query) {
    SearchRecentSuggestions suggestions = new SearchRecentSuggestions(getActivity(),
            MyCustomSuggestionProvider.AUTHORITY,
            MyCustomSuggestionProvider.MODE);
    suggestions.saveRecentQuery(query, "recent");
}

我的建议提供者似乎没问题:

public class MyCustomSuggestionProvider extends SearchRecentSuggestionsProvider {

public final static String AUTHORITY = "com.zgui.musicshaker.provider.MyCustomSuggestionProvider";
public final static int MODE = DATABASE_MODE_QUERIES | DATABASE_MODE_2LINES;

public MyCustomSuggestionProvider() {
    setupSuggestions(AUTHORITY, MODE);
}

@Override
public Cursor query(Uri uri, String[] projection, String sel,
        String[] selArgs, String sortOrder) {
    //retrieves a custom suggestion cursor and returns it
}
}

可搜索的.xml :

<?xml version="1.0" encoding="utf-8"?>
<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.zgui.musicshaker.provider.MyCustomSuggestionProvider"
android:searchSuggestSelection=" ?" />

list :

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>

        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
    </activity>
<provider
        android:name=".provider.MyCustomSuggestionProvider"
        android:authorities="com.zgui.musicshaker.provider.MyCustomSuggestionProvider"
        android:enabled="true" >
    </provider>

根据 that post ,我应该在 data/data/app.package.name/databases/databasename.db 有一个最近的搜索数据库,但我似乎没有...
或者我是否应该自己在 MyCustomSuggestionProvider.query() 返回的光标中添加“最近的搜索建议”?欢迎任何想法...

最佳答案

找到了:Android 文档上一点都不清楚,但我需要自己发出请求并在 MyCustomSuggestionProvider.query() 中合并游标:

Cursor recentCursor = super.query(uri, projection, sel, selArgs,
            sortOrder);
Cursor[] cursors = new Cursor[] { recentCursor, customCursor};
return new MergeCursor(cursors);

尽管如此,请确保两列中的列相同...

关于android - 不显示最近的搜索,显示自定义建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11329535/

相关文章:

android - LibGDX:从 Android 网址下载并加载模型

android - 空/空白下拉菜单,Android自定义搜索建议

elasticsearch - 弹性搜寻字词建议

elasticsearch - 创建多词搜索建议

android - 将 C 库连接到 iOS 应用程序

Android:stopService 不调用 onDestroy

google-chrome - 在Chrome中为自定义搜索引擎添加建议URL

java - Elasticsearch带数字的字符串的SuggestResponse错误

java - 如何在代码中设置 ListView 的填充?

javascript - 每次 Android 打开自己的虚拟键盘时,jQMobile 都会重新定位弹出窗口 - 我无法输入任何内容