四、创建Searchable Activity
searchable activity根据搜索关键字进行搜索,并显示搜索结果。
当我们在search dialog or widget执行搜索的时候,系统就启动你的searchable activity ,并把搜索关键字用一个aciton为ACTION_SEARCH的Intent传给你的searchable activity. 你的searchable activity在Intent中通过extra的QUERY来提取搜索关键字,执行搜索并显示搜索结果.
我们需要在AndroidManifest.xml文件中声明Searchable Activity,以便在search dialog or widget执行搜索的时候,系统启动该searchable activity并把搜索关键字传给它。
4.1、声明searchable activity
如何在AndroidManifest.xml文件中声明Searchable Activity
1. 在activity的<intent-filter> 中添加一个可以接受action为ACTION_SEARCH的intent。
2. 在<meta-data>中指明search dialog or widget的配置文件(即searchable.xml)
比如,示例2:
<application ... >
<activity android:name=".SearchableActivity" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
...
</application>
<meta-data>必须包括android:name这个属性,而且其值必须为"android.app.searchable",
还必须包括android:resource这个属性,它指定了我们的search dialog的配置文件。(示例2中指定是the res/xml/searchable.xml).
注意: <intent-filter> 没有必要加入<category android:name="android.intent.category.DEFAULT" /> ,
因为系统是通过component name把ACTION_SEARCH intent explicitly显示的传递给searchable activity的。
4.2、执行搜索
当你在manifest文件中,声明好了searchable activity,在你的searchable activity,就可以参照下面的3步执行搜索了。
(1),提取搜索关键字
(2),在你的数据中进行搜索
(3),显示搜索结果
一般来说,你的搜索结果需要要在ListView进行显示,所有你的searchable activity需要继承ListActivity。
它包括了一个拥有单一ListView的layout,它为我们使用ListView提供了方便。
4.2.1、提取搜索关键字
当用户在search dialog or widget界面开始搜索的时候,系统将查找一个合适的searchable activity,并给它传送一个ACTION_SEARCH的intent,该intent把搜索关键字保存在extra的QUERY中。当activity的时候,我们必须检查保存在extra的QUERY中的搜索关键字,并提取它。
比如,示例3:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
// Get the intent, verify the action and get the query
Intent intent = getIntent();
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
doMySearch(query);
}
}
在Action为ACTION_SEARCH的intent中,extra的QUERY总是被包含。在示例3提取处理了搜索关键字,然后让doMySearch()函数在执行真正的搜索的。
4.2.2、数据搜索
数据的存储和搜索都是和你的程序相关的。你可以以各种方式进行数据的存储和搜索,它才是你的程序更需要关注的。
但是还是有几点需要注意的:
(1),当你的数据存储在手机的数据库中时,执行full-text search (using FTS3, rather than a LIKE query)
能提供在文本数据中得到更健壮且速度更快的search。在 sqlite.org 中可以得到FTS3的更多信息, 在 SQLiteDatabase 可以看到Android上的SQLite更多信息 . 可以在 Searchable Dictionary看到一个用FTS3实现搜索的示例。
(2),如果的数据来自互联网,那么你的搜索将受制于用户的数据连接情况。这时我们就需要显示一个进度条,直到从网路返回搜索结果。
. 在 android.net 可一看到更多的network APIs ,在 Creating a Progress Dialog 可以到看到如何显示一个进度条。
如果想让的数据和搜索变得透明,那么我建议你用一个Adapter返回搜索结果。这种方式,你更容易在ListView中显示搜索结果。如果你的数据在自于数据库,那么通过CursorAdapter向ListView提供搜索结果,如果你的数据来自于其他方式,可以扩展一个BaseAdapter来使用。
4.2.3、结果显示
正如上面讨论的一样,显示搜索结果建议使用的UI是ListView,所以你的searchable activity最好继承于ListActivity,然后是使用setListAdapter()来设置和搜索结果绑定了的Adapter。这样你的搜索结果就可以显示在ListView中了。
你可以参考 Searchable Dictionary 示例,它展示了怎么进行数据库查询,怎么使用Adapter向ListView提供搜索结果。
分享到:
相关推荐
二、什么是searchable 在Laravel中,"searchable"特性通常由第三方包如`scout`提供,它允许模型实现一个搜索接口,将数据索引到外部搜索引擎(如Algolia或Elasticsearch)上,然后快速执行全文搜索。这样不仅可以...
此外,由于其高度可定制的特性,开发者可以根据项目需求进行二次开发。 总结,Eloquent/Searchable为Laravel项目提供了强大的搜索功能,使得开发者能够在Eloquent模型上轻松实现复杂、高效的查询。通过理解并熟练...
这就是可搜索加密(Searchable Encryption)技术的由来。2000年,D. Song等人发表的经典论文《Practical Techniques for Searches on Encrypted Data》为这一领域的研究奠定了基础。本篇文章将深入探讨可搜索加密的...
#### 二、现有的搜索加密技术局限性 - **精确关键词搜索**: 大多数现有方案仅支持精确的关键词搜索,这意味着搜索词必须完全匹配数据库中的关键词才能找到对应的数据。 - **模糊搜索**: 一些改进的方法允许一定程度...
- `ostore-0.1-bin.jar`:oStore的二进制可执行文件,包含了编译后的类文件,可以直接运行。 - `ostore-0.1-src.jar`:oStore的源代码文件,供开发者查看和学习。 - `ostore-0.1-junit.jar`:可能包含了用于测试...
二、源码分析 1. 搜索建议的生成:当用户在搜索框输入时,`SearchActivity`会调用`SearchService`的`onSuggestionsRequested()`方法。这里,`SearchableInfo`对象包含了关于数据源的信息,如搜索字段、显示模板等。...
二、插件核心功能 1. **实时搜索**:用户在输入框中输入文字时,插件会自动过滤出匹配的选项,显示在下拉列表中,无需用户滚动查找。 2. **多选支持**:除了基本的单选模式,jQuery-searchableSelect还支持多选...
二、SearchManager集成步骤 1. 在AndroidManifest.xml中配置搜索服务: - 声明支持ACTION_SEARCH Intent的Activity。 - 添加标签内的,指定Searchable配置。 2. 创建Searchable配置文件(searchable.xml),定义...
下拉框美化主要体现在两方面:一是视觉效果的提升,二是功能的增强。视觉效果上,插件可能提供了自定义样式,包括边框、背景色、字体等,使得下拉框与网站整体风格保持一致,提高页面美感。功能增强则体现在添加了...
在IT行业中,尤其是在前端开发领域,用户界面的交互性与用户...通过这样的改造,我们可以使`jquery.searchableSelect.js`更适应中文环境,提升用户体验,同时也展示了前端开发中对已有工具进行二次开发和优化的能力。
二、SearchManager的主要组件 1. SearchView:这是一个可扩展的视图,用于显示搜索框,用户可以在其中输入查询文本。它可以作为ActionBar上的一个ActionView或者独立的Dialog使用。 2. SearchableInfo:这是描述搜索...
二、创建浮动搜索框 1. 在AndroidManifest.xml中注册搜索活动: 首先,你需要定义一个Activity来处理搜索请求。在标签内添加标签,并设置android:name属性为搜索活动的类名,同时添加标签声明ACTION_SEARCH Intent...
### 二、模型集成 要让 Scout 在你的 Eloquent 模型上工作,需要在模型类上使用 `Searchable` trait: ```php use Laravel\Scout\Searchable; class Product extends Model { use Searchable; } ``` ### 三、...
3. **数据解析**:当从服务器接收到响应时,JZKit.jar会解析返回的数据,将原始的二进制数据转化为用户友好的格式,如XML或JSON。这涉及到对不同数据格式的理解和转换。 4. **事件驱动编程**:由于Z39.50协议的交互...
#### 二、搜索建议概述 **搜索建议(Search Suggestions)**是指在用户输入搜索关键词的过程中,系统能够自动提供与输入内容相关的推荐列表,帮助用户快速找到所需信息或者减少输入负担。这一功能不仅能够提升用户...
《jQuery实现带搜索过滤功能的下拉列表框详解》 在网页开发中,下拉列表框(Dropdown List)是常见的用户交互元素,用于提供多个...对于有能力的开发者,还可以对代码进行二次修改,以适应更复杂的需求或改进性能。
二、核心功能与特性 1. 模糊搜索:用户在输入框中输入文字时,插件会实时过滤出匹配的选项,实现模糊搜索功能。 2. 自动完成:根据用户的输入,插件会提供自动补全建议,提高用户输入效率。 3. 可定制化:jQuery ...
`《二、鱼眼索引控件详解之二 —— 快速索引雏形实现》`可能是对鱼眼索引控件的详细教程,可帮助你理解和构建自己的索引控件。`下载更多打包源码~.url`可能是一个链接,指向更多相关源码的下载资源。 总之,Android...
**二、Elasticsearch简介** Elasticsearch 是一个基于Lucene的开源搜索引擎,具有高可扩展性、实时性、分布式存储和搜索的特点。它特别适合处理大规模的数据索引和搜索,广泛应用于日志分析、网站搜索、电商推荐...
**二、使用 Laravel Scout** Laravel Scout 提供了一个统一的接口来处理各种搜索驱动,包括 Elasticsearch。首先,在你的模型中使用 Scout trait: ```php use Laravel\Scout\Searchable; class YourModel ...