注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

民主与科学

独立之人格,自由之思想

 
 
 

日志

 
 

Searchable之自定义Suggestions(上)  

2011-05-16 16:22:01|  分类: 开发专题 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
原文地址:http://developer.android.com/guide/topics/search/adding-custom-suggestions.html
当你使用search dialog或search widget的时候,你可以使用自定义的search suggestions,它就来自于你的应用程序。
比如,如果你的应用是个字典,你可以给出一些和当前已输入的文本相匹配的words作为search suggestions。这是最好的suggestions方式。
因为你可以有效地预测用户想要什么,并提供即时访问它。图一就是在search dialog中使用个性化Suggestion的界面。
图一
自定义的Suggestions(上) - hubingforever - 民主与科学
 
一旦您提供自定义的建议,您还可以将它们提供给系统的快速搜索框,这样就提供从外部的应用程序访问您的内容的方式。
在开始添加自定义的建议前,需要先在你的程序中用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_SEARCH intent发送到你的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中进行查询的方式 关于其他的一些可选属性的使用将在后面进行详细介绍。
  评论这张
 
阅读(1143)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017