Searchable之自定义Suggestions(上)

原文地址:http://developer.android.com/guide/topics/search/adding-custom-suggestions.html

当你使用search dialog或search widget的时候,你可以使用自定义的search suggestions,它就来自于你的应用程序。
比如,如果你的应用是个字典,你可以给出一些和当前已输入的文本相匹配的words作为search suggestions。这是最好的suggestions方式。
因为你可以有效地预测用户想要什么,并提供即时访问它。图一就是在search dialog中使用个性化Suggestion的界面。
图一
 
一旦您提供自定义的建议,您还可以将它们提供给系统的快速搜索框,这样就提供从外部的应用程序访问您的内容的方式。
在开始添加自定义的建议前,需要先在你的程序中用search dialog or a search widget实现搜索功能,关于此的详细内容请参考《Searchable》系列
基本原理
当用户选择了一个custom suggestion,系统将向你的searchable activity发送一个Intent.普通的搜索发送的Intent的是Action为ACTION_SEARCHandroid.intent.action.SEARCH)的Intent,然而这里的Intent的Action却是可自定义的(但是一般还是使用ACTION_VIEW(android.intent.action.VIEW)),它还可以包含一些和你选择的suggestion相关的数据。例如示例程序dictionary,当用户选择一个建议,您的应用程序可以立即打开该单词的定义,而不是在dictionary中搜索匹配项。
提供自定义的suggestions,需要以下几步:
A、实现基本的searchable activity,关于此的详细内容请参考Searchable系列
B在searchable的配置文件中指明提供custom suggestions的content provider。
C创建一个用于提取你自定义的suggestions的Content Provider,并在manifest中声明该Provider。
D、声明当用户选择了一个custom suggestion后,系统向你的searchable activity发送的Intent的Action和data.
正如Android系统显示搜索对话框一样,系统也负责您的搜索建议的显示。你所需要的就是提供一个content provide,以便系统从中提取你的搜索建议。
一旦系统识别到你的Activity是searchable,且它提供了search suggestions。
当用户键入了一个query,下面的procedure将发生:
A、系统将得到search query text,然后在你的用于提取自定义的suggestions的Provider进行查询。
B、你的Content Provider用一个Cursor返回和search query text相关的所有suggestions。
C、系统通过Cursor显现和search query text相关的所有自定义suggestions的列表。
一旦自定义的suggestions被显示,下面的几种情况将发生:
A如果用户又键入了,或用户改变了search query text,上面提到步骤将再次发生
B、如果用户点击了搜索键,你的search suggestions将被忽略,系统将把普通 ACTION_SEARCHintent发送到你的searchable activity
C、如果用户选择了一个suggestions,一个携带自定义action和自定义data的Intent将被传送到你的searchable activity,通过该Intent,你的应用程序就可以打开suggestion所对应的具体内容
修改searchable配置文件
为了支持自定义suggestion,你需要在你的searchable配置文件中android:searchSuggestAuthority 属性添加到 <searchable> 中 
比如:
示例1
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_label"
    android:hint="@string/search_hint"
    android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider">
</searchable>
当然你还可能需要使用其他的一些可选属性,这都取决于你如何把intent和suggestion进行对应,以及你在content provider中进行查询的方式 关于其他的一些可选属性的使用将在后面进行详细介绍。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值