gpt4 book ai didi

android - SearchManager - 添加自定义建议

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:00:54 26 4
gpt4 key购买 nike

我已经在线阅读了所有关于构建搜索界面和添加自定义建议的文档……但我仍然不清楚这是如何工作的。该文档说我必须“为您的建议构建一个表(例如在 SQLiteDatabase 中)并使用所需的列格式化该表”。我假设系统最终会自己用适当的建议填充这个表......但是哪个进程/类对此负责,以及实际插入何时发生(在用户进行任何查询之前,在用户已进行查询等)?

当我在这里问问题时,如果有人可以澄清 AutoCompleteTextView 和带有自定义建议的 SearchView 之间的区别...真棒。与 SearchView 相比,AutoCompleteTextView 似乎更容易实现(这需要对 ContentProvider、SQLiteDatabase 辅助类等进行更改)。

最佳答案

您必须创建一个内容提供程序,它根据目前在搜索 View 中输入的查询提供您的自定义建议。在您的 searchable.xml 中,您可以配置搜索表达式的最小长度,在征求建议之前必须达到该长度。这个内容提供者称为建议提供者(它仍然扩展了 ContentProvider)。内容提供者的权限也在searchable.xml中配置。

建议提供者如何计算其建议没有限制。您可以搜索 Web 查询数据库或读取文件。但是查询的答案是表格格式。如果直接从数据库中查询建议,您可以使用数据库查询回答的游标将结果传递到内容提供者的 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

关于android - SearchManager - 添加自定义建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9051573/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com