博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android核心功能开发SearchView使用的开发(代码共享)
阅读量:5736 次
发布时间:2019-06-18

本文共 2598 字,大约阅读时间需要 8 分钟。

      在Android上。搜索是一个核心的用户功能。用户可以搜索可用的任何数据,的内容是否存储在设备本身或者需要促进网络接入上。Android它提供了一个框架,为用户创造一个一致的搜索的搜索体验,它可以帮你实现搜索应用程序。

搜索框架提供两种搜索模式:一个搜索对话框(Search Dialog)位于搜索屏幕的顶部或窗体小部件(SearchView),能够将其嵌入到你的布局中。在这两种情况下,Android系统将帮助你搜索实现交付运行搜索的任务给一个特定的Activity。

效果例如以下图所看到的。

       当用户须要运行一个搜索的搜索对话框或搜索小部件,系统创建一个Intent和存储用户Query,然后系统会启动你事先声明的用于运行数据查找的Activity,,使用它进行数据搜寻。总共须要下面三个步骤。

(1)建立一个Search.XML文件在res/xml文件里

     一个XML文件,配置一些search dialog或widget的设置。

它包含设置特性,比方语音搜索,搜索建议和提示文本搜索框。

 (2)声明一个SearchActivity

          这个Activiy接收搜索用户的数据,并显示搜索结果。

特别注意的是为了使调用的Activity找到这个SearchActivity,你必须首先声明Android搜索Activitydao到你的清单文件。

例如以下所看到的。

...
  SearchActivity要完毕下面三个步骤。1 接收查询 2 搜索您的数据3 展示结果。

@Overridepublic void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.search);    handleIntent(getIntent());}@Overrideprotected void onNewIntent(Intent intent) {    setIntent(intent);    handleIntent(intent);}private void handleIntent(Intent intent) {    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {      String query = intent.getStringExtra(SearchManager.QUERY);      doMySearch(query);    }}
     之前看博客又看到有人说onNewIntent()不知道几时促发的。我研究了下官方文档上面是这么写的。假设我们将android:launchMode设置为“singleTop”,然后SerachActivity接收ACTION_SEARCH intent 会调用 onNewIntent()方法。

(3)建立一个搜索界面

   搜索界面包括两种类型SearchDialog和SearchWidget。SerachDialog:默认情况下,搜索对话框隐藏,我们通过调用onSearchRequested()(当用户按搜索button)让他显示在屏幕上端,SearchWidget :同意用户将搜索框放在布局的任何位置,但通常须要跟actionbar结合。

  搜索界面的Activity也须要在清单文件声明

public class OtherActivity extends Activity{          private Button mStartSearch;          @Override          protected void onCreate(Bundle savedInstanceState) {              super.onCreate(savedInstanceState);              setContentView(R.layout.search_invoke);              //就一个button              mStartSearch = (Button)findViewById(R.id.btn_start_search);              //启动搜索框              mStartSearch.setOnClickListener(new OnClickListener() {                  @Override                  public void onClick(View v) {                      onSearchRequested();                  }              });          }                    //重写onSearchRequested方法          @Override          public boolean onSearchRequested() {                     //除了输入查询的值,还可额外绑定一些数据              Bundle appSearchData = new Bundle();              appSearchData.putString("demo_key","text");                            startSearch(null, false, appSearchData, false);                       //必须返回true。

否则无效数据绑定 return true; } }

你可能感兴趣的文章
iptables规则备份及恢复、firewalld九个zone,service的操作
查看>>
www.conf配置文件的参数详解
查看>>
如何实现邀请好友帮抢票功能?
查看>>
深圳联通特邀湖北籍企业参观公司总部大楼举行
查看>>
告警系统主脚本、告警系统配置文件、告警系统监控项目
查看>>
Python 和 PyCharm 在 windows10 环境的安装和设置
查看>>
C语言入门基础之数组——数学和编程的完美结合(图)
查看>>
《远见》的读后感作文1000字范文
查看>>
重置密码、单用户模式、救援模式
查看>>
LAMP环境搭建1-mysql5.5
查看>>
第三课 Linux目录及文件管理、用户组管理及bash重定向
查看>>
shell 脚本攻略--小试牛刀
查看>>
spring boot view override
查看>>
bzoj 2282: [Sdoi2011]消防
查看>>
我的友情链接
查看>>
centos5.9使用RPM包搭建lamp平台
查看>>
关于C#面向对象2
查看>>
Javascript String类的属性及方法
查看>>
vim编辑器如何添加或删除多行注释
查看>>
[LeetCode] Merge Intervals
查看>>