Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在ContentProvider中重写'query()',会阻止显示最近的建议_Android_Search - Fatal编程技术网

Android 在ContentProvider中重写'query()',会阻止显示最近的建议

Android 在ContentProvider中重写'query()',会阻止显示最近的建议,android,search,Android,Search,我有一个存储用户搜索历史记录的应用程序。我现在也在添加自定义建议。这需要我再添加一个方法,query(),并在我的MyCustomSuggestionProvider类中重写它 但是,这样做会阻止最近的建议显示出来。它们仍存储在suggestions.db中。当我删除要测试的query()方法时,最近的建议又回来了 有人知道如何使这两件事协同工作吗?问题不在于查询()过多,而在于我如何处理它。以下是我的解决方案: @Override public Cursor query(Uri uri, St

我有一个存储用户搜索历史记录的应用程序。我现在也在添加自定义建议。这需要我再添加一个方法,
query()
,并在我的
MyCustomSuggestionProvider
类中重写它

但是,这样做会阻止最近的建议显示出来。它们仍存储在suggestions.db中。当我删除要测试的
query()
方法时,最近的建议又回来了


有人知道如何使这两件事协同工作吗?

问题不在于查询()过多,而在于我如何处理它。以下是我的解决方案:

@Override
public Cursor query(Uri uri, String[] projection, String selection,
        String[] selectionArgs, String sortOrder) {

    Cursor recentCursor = super.query(uri, projection, selection,
            selectionArgs, sortOrder);

    query = selectionArgs[0];
    if (query == null || query.length() < 3) {

        return recentCursor;

    } else {

        query = selectionArgs[0];

        MatrixCursor customCursor = new MatrixCursor(COLUMN_NAMES);

        SearchSuggestionObject[] suggestions = getSuggestionsFromWebFeed(query);

        for (SearchSuggestionObject suggestion : suggestions) {

            customCursor.addRow(new Object[] { suggestion.getId(),
                    suggestion.getItem(), suggestion.getCat(),
                    suggestion.getItem(), suggestion.getItem(),
                    suggestion.getCat(), "android.intent.action.SEARCH" });
        }

        return customCursor;
    }
}
@覆盖
公共游标查询(Uri、字符串[]投影、字符串选择、,
字符串[]selectionArgs,字符串排序器){
Cursor recentCursor=super.query(uri、投影、选择、,
选择符、排序符);
query=selectionArgs[0];
if(query==null | | query.length()<3){
返回最近光标;
}否则{
query=selectionArgs[0];
MatrixCursor customCursor=新MatrixCursor(列名称);
SearchSuggestionObject[]suggestions=getSuggestionsFromWebFeed(查询);
对于(搜索建议对象建议:建议){
customCursor.addRow(新对象[]{suggestion.getId(),
suggestion.getItem(),suggestion.getCat(),
suggestion.getItem(),suggestion.getItem(),
suggestion.getCat(),“android.intent.action.SEARCH”});
}
返回自定义光标;
}
}

首先,你必须决定你真正想要发生什么。听起来你既想要最近的建议,也想要你的定制建议,但要什么样的组合呢?您想先显示最近的建议吗?还是要先显示自定义建议?您想全部显示,还是只显示一半的自定义和一半的最近版本?在你决定之后,试着从你的
query
的覆盖实现中调用
super.query()
,然后适当地合并你的结果。@kabuko好吧,我解决了我的问题,但事情并不是这样的。我需要找出如何合并它们,但这些列需要匹配我相信,我很难弄清楚这一点。