我已经阅读了有关构建搜索界面和添加自定义建议的所有在线文档...但我仍然不清楚这是如何工作的。文档说我必须“为您的建议构建一个表(例如在 SQLiteDatabase 中)并使用所需的列格式化表”。我假设系统最终会自己用适当的建议填充此表...但是哪个进程/类负责此操作,以及何时发生实际插入(在用户进行任何查询之前,在用户已进行查询等)?
当我在这里问问题时,如果有人可以澄清AutoCompleteTextView
and a SearchView
带定制建议...那就太棒了。AutoCompleteTextView
与SearchView
(这需要对ContentProvider
、SQLiteDatabase 帮助器类等)。
您必须创建一个内容提供程序,根据目前在搜索视图中输入的查询提供自定义建议。在 searchable.xml 中,您可以配置搜索表达式的最小长度,在询问建议之前必须达到该长度。该内容提供程序称为建议提供程序(它仍然扩展 ContentProvider)。内容提供者的权限也在searchable.xml中配置。
建议提供者如何计算其建议没有限制。您可以搜索网络查询数据库或读取文件。但查询的答案是表格的格式。如果直接从数据库查询建议,您可以使用数据库查询回答的游标在内容提供程序的 query() 方法中传递结果。如果结果是从一个或多个源计算出来的,您可以使用 MatrixCursor 动态创建一个表。
来自建议提供者的答案行由搜索机制用来显示建议,它们存储在表中。行的格式如下:
private static final String[] COLUMNS = {
"_id",
SearchManager.SUGGEST_COLUMN_ICON_1, // ID of a drawable (icon) as String
SearchManager.SUGGEST_COLUMN_TEXT_1, // main text for suggestion display
SearchManager.SUGGEST_COLUMN_TEXT_2, // secondary text for suggestion display
SearchManager.SUGGEST_COLUMN_INTENT_DATA, // this could be an URI to access the suggestion as used in an intent with a VIEW action
SearchManager.SUGGEST_COLUMN_INTENT_ACTION, // this could be Intent.ACTION_VIEW
SearchManager.SUGGEST_COLUMN_SHORTCUT_ID // e.g. SearchManager.SUGGEST_NEVER_MAKE_SHORTCUT
};
这里更详细地描述了搜索:http://developer.android.com/guide/topics/search/index.html http://developer.android.com/guide/topics/search/index.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)