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好吧,我解决了我的问题,但事情并不是这样的。我需要找出如何合并它们,但这些列需要匹配我相信,我很难弄清楚这一点。