Android中搜索功能的添加

目前,Android有两种搜索实现,一种是搜索控件(SearchView),一种是搜索对话框。两种实现都需要做一些准备工作:添加搜索配置文件(searchable configuration),创建searchable activity。搜索配置文件包括语音搜索、搜索建议、提示等功能的配置,searchable activity接收搜索查询、搜索数据、显示搜索结果。

搜索控件(SearchView)的实现

可在选项菜单资源中如下设置(实现了Action Bar中添加搜索框,也可用将SearchView用在其它布局中):
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/search"
          android:title="@string/menu_search"
          android:icon="@drawable/ic_menu_search"
          android:showAsAction="collapseActionView|ifRoom"
          android:actionViewClass="android.widget.SearchView" />
</menu>
就会实现SearchView形式的搜索了。
如果想添加其它搜索选项,比如搜索提示字符串、搜索建议提示等等,可以在Activity的onCreateOptionsMenu(Menu menu)方法中添加如下代码:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
            SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
            SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
            searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
            searchView.setIconifiedByDefault(false);
}


搜索对话框的实现

在布局中添加一个按钮用于搜索,当然也可以用上边选项菜单中的配置。
在按钮或菜单的触发方法中,调用onSearchRequested()方法。
如在上边选项菜单中,见以下代码:
public boolean onOptionsItemSelected(MenuItem item) {
       switch (item.getItemId()) {
            case R.id.search:
                onSearchRequested();
                return true;
            default:
               return false;
        }
    }
}


两种搜索实现以后的工作

以上搜索接口实现以后,就可以实现搜索功能,当在搜索框中键入搜索关键字后,有两种选择:
一种是点击给出的搜索建议(1处),一种是按回车执行搜索查询(2处)。这两种代码实现如下:
private void handleIntent(Intent intent) {
        if (Intent.ACTION_VIEW.equals(intent.getAction())) {
            // 1 handles a click on a search suggestion; launches activity to show word
            Intent wordIntent = new Intent(this, WordActivity.class);
            wordIntent.setData(intent.getData());
            startActivity(wordIntent);
        } else if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
            // 2 handles a search query
            String query = intent.getStringExtra(SearchManager.QUERY);
            showResults(query);//此方法自己实现
        }
}


以上代码见Android SDK样例Searchable Dictionary

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值