ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Settings搜索栏数据搜索流程之搜索和页面跳转

2022-01-14 19:59:29  阅读:177  来源: 互联网

标签:java Settings 数据 结果 查询 搜索 跳转 方法


Settings搜索栏数据搜索流程之数据初始化操作_腾格尔黑哥的博客-CSDN博客

在之前已经分享过搜索栏搜索数据的界面加载、数据库初始化操作,接下来分享一下大家最想知道的数据搜索和页面跳转。以我当前使用的手机界面为例,讲解一下。

进入到手机的设置,我们可以看到搜索框—搜索设置项,当我们点击以后则跳转到了下面这个界面。

在SearchFragment的onCreate方法中进行了数据初始化,在onCreateView中加载上图中的布局search_panel.xml。

看到数据输入大家可能会想到EditText,之前我在一片文章中也有看到过使用EditText;但是android 11的代码中可以看到使用的是SearchView。SearchView是android内置的一个搜索框组件,使用起来比较方便,将EditText的使用的各种监听都封装好了。只要传入一个数组的数据,就会产生显示一个相关的ListView。并且在这里对搜索结果界面的布局进行了相关的配置。 

 

搜索数据的开始其实是在点击搜索框,输入数据那一刻开始。当监听到输入框改变事件发生时,会调用onQueryTextChange方法并进行相应的判断,如果输入框不为空那么那么会调用restartLoaders()方法。

 

 

进入到restartLoaders()方法中我们可以看到有一个LoaderManager,它的代码存放在framewoerks下面,当它执行完的时候会回调用onCreateLoader方法。该方法主要调用SearchFeatureProviderImpl.java中的getSearchResultLoader()方法-->SearchResultLoader.java类,该类中的loadInBackground()方法再次加载SearchResultAggregator.java中的fetchResults(),在fetchResults()中开启任务执行查询操作,将查询到的结果收集起来,并合并结果集。

 

 

 getSearchQueryTasks()方法执行的就是查询操作,获取所有的查询任务。

以从数据库查询为例,query中4条查询语句。查询结束mergeSearchResults中合并结果集。

当结果集的操作完成以后通过LoadManager产生回调onLoadFinished,在这里会将结果集发给适配器,由适配器来进行数据的展示。

 回到SearchFragment中,我们可以看到SearchResultAdapterm,这就是我们显示搜索结果的适配器。并且在onCreateView中将Adapter与RecycleView进行绑定。

 在SearchResultsAdapter.java中包含结果集对象,还有与Adapter相关的ViewHolder对象。同时也会判断结果类型去加载不同的view。

 进入到IntentSearchViewHolder.java中有一个onBind()方法,在这个方法中可以看到它为每一个搜索框的结果都设置设置点击监听事件,目的就是获得对应的intent对象,然后调用StartActivity实现结果页面的跳转。

标签:java,Settings,数据,结果,查询,搜索,跳转,方法
来源: https://blog.csdn.net/qq_44285245/article/details/122479851

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有