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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

上一篇:adb设置代理


下一篇:【SAP报错】FINS_ACDOC_CUST201:Correct the Customizing settings for ledgers for the universal journal