Android 将SearchRecentSuggestionsProvider与一些预定义的术语一起使用?
我正在寻找一些关于扩展SearchRecentSuggestionsProvider的信息,以便它能够处理两种类型的建议:Android 将SearchRecentSuggestionsProvider与一些预定义的术语一起使用?,android,search,autocomplete,Android,Search,Autocomplete,我正在寻找一些关于扩展SearchRecentSuggestionsProvider的信息,以便它能够处理两种类型的建议: 用户搜索历史记录 预定义的术语,我希望总是有尽可能多的建议 例如,当一个用户开始输入“Goo”时,也许他们以前搜索过“Goo Gone”——也许我也想包括“Google”,因为它在我的“特殊术语”列表中 参考网站上的文档,我发现我真的可以做一个非此即彼的选择——使用谷歌的代码或滚动我自己的SQLite数据库来存储东西。是否有方法覆盖SearchRecentSuggest
- 用户搜索历史记录
- 预定义的术语,我希望总是有尽可能多的建议
参考网站上的文档,我发现我真的可以做一个非此即彼的选择——使用谷歌的代码或滚动我自己的SQLite数据库来存储东西。是否有方法覆盖SearchRecentSuggestionsProvider的一部分以执行我想要的操作 是的,您可以使用自己的类扩展SearchRecentSuggestionsProvider。这是我写的用来做这件事的课程:
是的,您可以使用自己的类扩展SearchRecentSuggestionsProvider。这是我写的用来做这件事的课程:
非常有趣。我很担心,因为我在javadoc的几个部分看到我不应该重写那个类。我会试一试,然后在运行后将您标记为正确。setupSuggestions(AUTHORITY,MODE)方法是什么样子的?非常有趣。我很担心,因为我在javadoc的几个部分看到我不应该重写那个类。我会尝试一下,然后在运行之后将您标记为正确。setupSuggestions(AUTHORITY,MODE)方法是什么样的?
package boston.Bus.Map.provider;
import boston.Bus.Map.data.RoutePool;
import boston.Bus.Map.main.Main;
import boston.Bus.Map.provider.DatabaseContentProvider.DatabaseAgent;
import boston.Bus.Map.transit.TransitSystem;
import android.app.SearchManager;
import android.content.ContentProvider;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.SearchRecentSuggestionsProvider;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;
public class TransitContentProvider extends SearchRecentSuggestionsProvider {
private UriMatcher matcher;
public static final String AUTHORITY = "com.bostonbusmap.transitprovider";
public static final int MODE = SearchRecentSuggestionsProvider.DATABASE_MODE_QUERIES;
private static final int SUGGESTIONS_CODE = 5;
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY);
public TransitContentProvider()
{
matcher = new UriMatcher(UriMatcher.NO_MATCH);
matcher.addURI(AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY, SUGGESTIONS_CODE);
setupSuggestions(AUTHORITY, MODE);
}
@Override
public boolean onCreate() {
boolean create = super.onCreate();
return create;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder)
{
int code = matcher.match(uri);
switch (code)
{
case SUGGESTIONS_CODE:
if (selectionArgs == null || selectionArgs.length == 0 || selectionArgs[0].trim().length() == 0)
{
return super.query(uri, projection, selection, selectionArgs, sortOrder);
}
else
{
ContentResolver resolver = getContext().getContentResolver();
return DatabaseAgent.getCursorForSearch(resolver, selectionArgs[0]);
}
default:
return super.query(uri, projection, selection, selectionArgs, sortOrder);
}
}
}