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

2023-05-16

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

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

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

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

看到数据输入大家可能会想到EditText,之前我在一片文章中也有看到过使用EditText;但是android 11的代码中可以看到使用的是SearchViewSearchViewandroid内置的一个搜索框组件,使用起来比较方便,将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实现结果页面的跳转。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Settings搜索栏数据搜索流程之搜索和页面跳转 的相关文章

  • 让 Visual Studio 使用 VS code 快捷键/键绑定

    我最近经常使用 VSCode 并且已经习惯了快捷键 键绑定 Ctrl D Ctrl P Alt leftArrow 等 然而 我最近有一些工作需要使用常规 Visual Studio Microsoft Visual Studio Ente
  • 设置 Android Things 时区

    在 Raspberry Pi 上安装 Android Things 后 时间不正确 我的时区是 GMT 2 并且使用date Z我看到 RPi 的时区是 GMT 如何设置时区 更新 基于米哈尔 哈拉卡尔 https stackoverflo
  • MATLAB 设置 - 如果出现错误则停止

    我发现 出错时始终停止 如果出错则停止 在调试 MATLAB 代码时非常有用 但是 关闭 matlab 也会将其重置为 如果出现错误 永不停止 我怎样才能让这个设置持续存在 这确实是解决方案 在 Mathworks 中进一步挖掘得出了确切的
  • My.Settings 中自定义类的数组列表

    我有一个 Visual Basic Net 2 0 程序 我正在将设置从较旧的设置文件移至 app config 程序设置文件 我正在努力尽可能地做好这件事 所以 我添加了我的设置如图所示 https i stack imgur com e
  • Django 每个应用程序的不同设置

    如何为每个应用程序使用不同的设置 例如 http www mysite com app1 http www mysite com app1使用 app1 文件夹的 settings py local settings py http www
  • Android - 移动网络设置菜单(Jelly Bean)

    以下代码不适用于 Jelly Bean Android 4 1 final ComponentName cn new ComponentName com android phone com android phone Settings fi
  • 保留 WinRT 应用程序设置的最佳方式?

    我正在开发一个 WinRT 应用程序 它实际上也是一个游戏 我需要以文件或其他方式保存不同的信息 例如音频设置或播放器统计信息 如果它是一个文件 只需将设置写入或 我有一个想法 但我认为太初级了 获得这个的最佳方法是什么 非常感谢任何帮助或
  • VS 代码评论面板

    我正在看 comments openPanel openOnSessionStartWithComments 在 VS Code 中设置 但我不太明白这是如何工作的 我在 Google 或 StackOverflow 上找不到任何关于此的信
  • C# .NET 应用程序设置和升级

    我使用 Settings Default MySettingName 和 Settings Default Save 来保存和加载设置 当我更改版本号时 如何从旧版本获取设置并将其应用到新版本 我只是不太明白 Settings Upgrad
  • git 空格问题

    空白冲突很糟糕 空白最终对我来说是一种可怕的痛苦 在使用 git 时 git config apply whitespace strip 似乎增加了你发生冲突的机会 当你脱掉 不需要的空白 然后其他合作者会看到被剥离的空白 空格作为他们提交
  • Java Swing 保存和加载工作区/设置

    我有一个 Java Swing 应用程序 其中包含一堆框架 而这些框架又主要包含显示大量数据的表格 由于在启动时安排所有窗口和表格总是很麻烦且耗时 因此我想实现 工作区 功能 以便用户可以保存首选项设置并在启动时选择自动将存储的工作区加载到
  • iOS 启动设置 -> 限制 URL 方案

    我最近发现了一个很棒的iOS5自定义设置URL方案 这可以在这个伟大的website http handleopenurl com scheme apple settings app 我发现这很有效 将用户从我的应用程序引导到 设置 应用程
  • iOS 获取代理设置

    在我的项目中 我使用 libcurl 通过互联网下载数据 问题是 libcurl 无法检测 wifi 连接的代理设置 我必须手动设置 libcurl 的设置 所以我想知道如何获取 wifi 连接的代理设置 我在钥匙串中找到了一些有关信息的线
  • 在 iOS 中加载/保存设置

    我在 AppDelegate 中定义了以下两个过程 保存设置和加载设置 单击保存按钮后 我将在 AppDidFinishLaunching 方法中调用 loadSettings 过程 并在设置视图中调用 saveSettings 过程 这两
  • 如何在.NET中针对不同环境使用不同的.settings文件?

    NET 允许您使用 settings 文件来管理应用程序设置 我想单独存储生产 开发和测试设置 我可以这样做 EnvironmentSettings environmentSettings get the current environme
  • git 的“文件模式”是什么?

    什么是 gitfilemode 对我来说 它在每个仓库中 git config文件 靠近顶部 core filemode true 它是什么 这是什么意思 与以下有什么关系吗 bare false 我也不太明白 A git 裸仓库 详细信息
  • 如何将 Properties.Settings.Default 的副本保存到变量?

    我有一个 恢复默认值 选项对话框中的按钮 并且想要恢复仅在此表单中受影响的值 而不是整个 Properties Settings Default 所以我尝试 var backup Properties Settings Default Pr
  • 如何从 php 代码更改 php 设置?

    我想更改 php 设置 但从 php 页面而不是 php ini 更改 我要更改的设置是 upload max filesize post max size and memory limit 如果您有AllowOverride 选项 您可以
  • Android Studio 3.0 - 设置未保存

    我已将 文件 gt 设置 gt 编辑器 gt 代码样式 中的 右边距 列 从默认的 100 增加到 140 不幸的是 每次重新启动 Android Studio 后 该边距都会重置 我还尝试导出和导入我的设置 但这并不能阻止重置右边距 希望
  • .Net应用程序设置路径

    默认情况下 Windows 应用程序设置保存在该目录中 USERPROFILE Local Settings Application Data

随机推荐

  • pytorch版本对计算能力的要求

    一 pytorch对计算能力要求 首先查看pytorch是否可用cuda完整流程应该是先查看是否在当前环境下的python In span class token punctuation span span class token numb
  • 在VS2013中配置boost_1_58_0过程和遇到的的问题

    Boost是为C 43 43 语言标准库提供扩展的一些C 43 43 程序库的总称 Boost库是一个可移植 提供源代码的C 43 43 库 xff0c 作为标准库的后备 xff0c 是C 43 43 标准化进程的开发引擎之一 xff0c
  • C语言学习专栏(1):易忘点

    C语言学习专栏系列 xff1a 版权申明 未经博主同意 xff0c 谢绝转载 xff01 xff08 请尊重原创 xff0c 博主保留追究权 xff09 xff1b 本博客的内容来自于 xff1a C语言学习专栏 xff08 1 xff09
  • git如何配置模板文件

    git如何创建模板文件 创建xxx template文件 xff0c 其内容为团队制定的Git提交注释规范 xff0c 如 xff1a Desgraption Date Author 通过git config命令配置commit templ
  • iOS很坑的error:

    iOS错误如下 error using bridging headers with module interfaces is unsupported 仔细看好错误类型 xff0c 是关于swift混合编译问题 解决办法 完美解决 xff0c
  • 使用Hexo搭建个人博客,绑定GitHub以及个人域名

    文章目录 前言安装Git安装Nodejs安装Hexo创建一个根目录安装Hexo验证安装是否成功初始化网址安装网址依赖开启本地服务 托管到Git配置git的SSH在github上配置秘钥 托管到GitHub配置仓库地址hexo安装部署的命令验
  • ubuntu定时任务的设置

    ubuntu 定时执行任务需要进行如下操作 xff1a span class token comment 使用 crontab 添加定时任务 span span class token comment 1 打开定时任务 span span
  • linux静态库、linux动态库制作、使用,动态库报错:error while loading shared libraries: libxxx.so: cannot open shared o

    接上一篇 xff1a linux C C 43 43 程序编译 gcc编译器基础使用 编译阶段 编译优化 命令大全 g 43 43 适用 本次来分享linux下C C 43 43 程序的静态库和动态库的制作和使用 xff0c 不废话 xff
  • SpringBoot热部署四步完成(idea2021.1)

    1 在pom xml文件中设置 xff08 两小步 xff09 span class token number 1 1 span xff1a 在 span class token generics span class token punc
  • spring boot中.yml配置日志文件格式正确运行出错(logging level)

    yml文件配置logging出错 格式如下 logging span class token operator span level span class token operator span com span class token p
  • 基本类型的字面值及其类型转换

    基本类型的字面值及其类型转换 一 基本类型的字面值二 类型转换 一 基本类型的字面值 1 整数字面值是int类型 2 byte xff0c short xff0c char三种比int小的整数可以用范围内的值直接赋值 3 浮点数的字面值是d
  • 使用idea创建servlet程序(idea:2021.2)

    使用idea创建servlet程序 1 Feil gt New gt Project 2 创建一个java项目 创建好之后项目结构如下图 右键项目点击Add Frameworks Support 勾选Web Application如下图 x
  • Java笔记(1)——绪论

    1 Java程序的总结 编写 xff1a 将编写的java程序保存在以 java 结尾的源文件中 编译 xff1a 使用javac exe命令编译java源文件 运行 xff1a 使用java exe命令解释运行字节码文件 2 一个Java
  • idea导入第三方jar包并打包在项目中

    IDEA项目引入第三方jar包 1 在resource创建lib文件并导入第三方jar包2 在pom xml文件中进行配置3 刷新maven 1 在resource创建lib文件并导入第三方jar包 2 在pom xml文件中进行配置 3
  • Beam Search源码理解

    本文的beam search源码来自 xff1a CodeBERT model py at master microsoft CodeBERT github com https github com microsoft CodeBERT b
  • 复现CVE-2023-21839

    攻击机安装jdk1 8 下载jdk1 8 https www azul com downloads version 61 java 8 lts amp os 61 ubuntu amp architecture 61 x86 64 bit
  • 解决ubuntu开机循环输入密码无法进入桌面的问题

    问题 xff1a ubuntu安装了QT后 xff0c 配置了环境变量 xff0c 发现登录的时候不能登录 xff0c 在登录界面循环显示 xff0c 不能进入图形化桌面 系统启动时 xff0c 会先读取 etc profile这个文件 x
  • hexo+github搭建个人博客

    主要工具简介 GitHub 使用GitHub托管代码 xff0c 将你的博客发布到网上供他人浏览 git 主要使用git bash git 程序员的时光机 xff0c 保存文件 xff0c 为你随时恢复你想要的版本 本次搭建博客过程中使用g
  • 5.3-第五章-表单-第三节-select表单元素-下拉列表-<select size=“2“ multiple><option selected>

    select表单元素 xff0c 主要用于下拉列表 xff0c 下拉列表也是常用的元素 xff0c 优势是 xff0c 可以节省页面显示区域 用来定义列表 xff0c 用来定义列表项 的name属性很重要 的value属性很重要 我们并不陌
  • Settings搜索栏数据搜索流程之搜索和页面跳转

    Settings搜索栏数据搜索流程之数据初始化操作 腾格尔黑哥的博客 CSDN博客 在之前已经分享过搜索栏搜索数据的界面加载 数据库初始化操作 xff0c 接下来分享一下大家最想知道的数据搜索和页面跳转 以我当前使用的手机界面为例 xff0