使用 firebaserecycleradapter 过滤 recyclerview

2024-03-11

我有一个带有 FirebaseRecyclerAdapter 的 RecyclerView。当用户开始在 SearchView 中输入内容时,我想用名称列表填充 RecyclerView。

public class SchoolsAdapter extends FirebaseRecyclerAdapter<School, SchoolsAdapter.SchoolViewHolder> {

    public SchoolsAdapter(Query ref) {
        super(School.class, R.layout.item_school, SchoolViewHolder.class, ref);
    }

    @Override
    public void populateViewHolder(SchoolViewHolder schoolViewHolder, School school, int position) {
        schoolViewHolder.name.setText(school.getName());
        schoolViewHolder.address.setText(school.getAddress());
    }

    static class SchoolViewHolder extends RecyclerView.ViewHolder {

        public TextView name;
        public TextView address;

        public SchoolViewHolder(View itemView) {
            super(itemView);
            name = (TextView) itemView.findViewById(R.id.school_item_tview_name);
            address = (TextView) itemView.findViewById(R.id.school_item_tview_address);
        }
    }
}

我猜我需要向搜索视图添加一个 QueryTextListener 来更新适配器中的查询。这会破坏 FirebaseRecyclerAdapter 吗?

或者我应该

@Override
public boolean onQueryTextChange(String newText) {
    mRecyclerView.setAdapter(new SchoolAdapter(ref.orderByChild("name").startAt(userQuery).endAt(userQuery+"~")) 
    return false;
}

每当用户输入内容时?

此外,文档讨论了 firebase 查询的排序和排序,但没有明确说明进行字符串模式匹配的最佳方法。进行字符串匹配的最佳方法是什么,以便回收器视图显示将搜索查询作为数据库记录的子字符串的所有结果,以及可能距离 1 个编辑距离的结果。

还有一种在查询时忽略大小写的方法吗?


我刚刚完成了一些接近您正在寻找的事情,我不确定这是最优雅的解决方案,但我会提出一些想法,如果您认为我的想法会有所帮助,我绝对可以提供一些示例。

首先,当我扩展基本 FirebaseAdapter 时,我添加了一个名为 mFullList 的新过滤器,因为 FirebaseAdapter 的 mItems 将用于显示列表,所以我不想在不必要时继续返回网络。然后,我重写子类中的所有方法,以使用 Firebase 回调中的值更新 mFullList,对它们进行排序、过滤,然后使用新列表调用 super.X()。

Quickly:

public reset(List)
   mFullList = List
   Collections.sort(mFullList, Comparator)
   getFilter().filter(filterString)

filterString 是适配器内的一个字段,并在调用 getFilter().filter() 期间更新。在执行过滤器期间,我循环遍历 mFullList 并进行比较:

mFullList.get(pos).getName().toLowerCase().contains(filterString.toLowerCase);

完成筛选后,您将获得一个新列表,该列表将传递到 FilterResults 对象中的 Filter.publishResults。 publishResults 调用类中执行更新和通知的方法。

filterCompleted(List)
   getItems().clear
   getItems().addAll
   notify

本质上,我不希望 FirebaseAdapter 停止获取完整的项目列表,我只是希望用户请求过滤该完整列表并适当处理他们的请求。另外,我没有看到基于用户输入额外字符而添加的网络请求的意义。

使用这种方法,您只需使用:

adapter.getFilter().filter("something")

根据您更新的字段过滤列表,以及

adapter.getFilter().filter("")

重置完整列表(只要您的 PerformFilter() 正确处理了它。这样,来自 FireBase 的新更新将根据用户选择进行过滤,并且当用户输入新值时,不需要创建新的 Firebase网络请求。

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

使用 firebaserecycleradapter 过滤 recyclerview 的相关文章

  • 是否可以使用最新的 APP_PLATFORM,同时仍保持向后兼容性?

    这是我的 Application mk APP ABI armeabi v7a APP PLATFORM android 16 APP OPTIM release APP STL gnustl static APP CPPFLAGS std
  • Android中如何使用洪水填充算法?

    我是Android编程新手 最近尝试编写一个简单的应用程序 仅供练习 在这个中 我想在用户点击时为图像着色 但我不知道如何开始 我读过不同的主题 其中提到使用 洪水填充 算法 我在网上找到了它 但我不知道如何将它放入我的简单应用程序中 我找
  • 为什么我将可绘制文件重命名为 .9.png 后出现“Some file crunching failed”?

    我正在测试 9 patch 图像 在一切正常之前 我重命名drawable file ic button beat box default png to ic button beat box default 9 png 然后我收到错误 某些
  • 如何将 EditText 传递给另一个活动?

    Intent intent new Intent this Name class intent putExtra key et getText toString startActivity intent Intent intent getI
  • Google Firebase - 如何删除崩溃报告?

    我最终失明了吗 还是没有明显的方法可以通过 Google Firebase Web 控制台删除 Firebase 崩溃报告 我的 Android 应用程序已成功记录报告 但现在出现大量 开发崩溃 占用了我在控制台中的大部分视图 这使得找到实
  • 如何在 Firebase 远程配置中从 JSON 获取值

    我是 Android 应用开发和 Firebase 的新手 我想知道如何获取存储在 Firebase 远程配置中的 JSONArray 文件中的值 String 和 Int 我使用 Firebase Remote Config 的最终目标是
  • SQLite支持android的数据类型有哪些

    谁能告诉我 SQLITE 中支持 ANDROID 的数据类型列表 我想确认 TIME 和 DATE 数据类型 这里有一个list http www sqlite org datatype3 htmlSQLite 的数据类型 支持时间和日期间
  • 从多个选项卡中的编辑文本字段获取文本

    我正在尝试创建一个使用选项卡作为输入表单的 Android 应用程序 基本上 我希望对其进行设置 以便用户可以在一个选项卡上输入一些信息 然后提交该信息 或者转到另一个选项卡并输入更多信息 然后从两个选项卡提交信息 我正在使用操作栏和片段来
  • Android ListView setSelection() 似乎不起作用

    我有一个ListActivity实现onListItemClick 并调用doSomething 类的功能 后者包含l setSelection position where l is the ListView object 现在有一个on
  • Google 移动广告和 Kindle Fire

    我最近用 Google 移动广告替换了 AdMob 库 对此我有一个疑问 广告会出现在 Amazon Kindle Fire 设备上吗 我问这个是因为我知道 Google 移动广告依赖于 Google Play 服务 所以我有点困惑 Goo
  • Android GCM 服务器的 API 密钥

    我有点困惑我应该为 GCM 服务器使用哪个 API 密钥 在文档中它说使用 android api 密钥 这对我不起作用并且总是给出未经授权的 http developer android com google gcm gs html ht
  • Android 改变 ImageView / Bitmap 的颜色

    我需要找到一种方法来改变 Android 中位图的颜色 我需要在我的应用程序中平滑地替换 更改椭圆形图像的颜色 具体取决于int价值 我需要类似的东西myValue 5比改变我的图像的颜色RED and if myValue 322将颜色更
  • 如何在android中的操作栏中创建Edittext?

    我们可以在操作栏中使用编辑文本吗 在阅读了 Google 中的大量资源后 我找不到如何在操作栏中创建编辑文本 谁能告诉我该怎么做 您可以设置自定义View为了ActionBar像这样 getActionBar setCustomView R
  • android 中camera.setParameters 失败

    我已将相机功能包含在我的应用程序中 我还在市场上推出了该应用程序 我从一位用户那里收到一条错误消息 称他在打开相机时遇到错误 我已经在 2 1 的设备上测试了该应用程序 我从用户那里得到的错误是使用 Nexus One 它主要运行 2 2
  • 如何从 Facebook 邀请好友到 Android 应用程序? - 给出错误

    我正在开发一个 Android 应用程序 我正在努力将 邀请朋友 功能添加到我的应用程序中 它转到我的AppLinkUrl成功但显示错误 我的清单代码如下
  • 内部存储的安全性如何?

    我需要的 对于 Android 我需要永久保存数据 但也能够编辑 并且显然是读取 它 用户不应访问此数据 它可以包含诸如高分之类的内容 用户不得对其进行编辑 我的问题 我会 并且已经 使用过Internal Storage 但我不确定它实际
  • 如何获取android手机型号、版本、sdk详细信息?

    如何获取android手机型号 版本 sdk详细信息 首先 看看 android sdk 页面上的这些 Build 类 http developer android com reference android os Build html h
  • Android:确定 2.2 及更高版本上的摄像头数量

    我的应用程序需要在 Android 2 2 及更高版本上运行 我需要一种方法来确定可用摄像机的数量 有很多帖子解决了这个问题 但我找不到一个有效的 一种解决方案是简单地检测操作系统版本 任何 2 2 版本的设备都仅限于 1 个摄像头 即使该
  • 更改Android菜单的背景颜色[重复]

    这个问题在这里已经有答案了 我正在尝试将标准浅灰色更改为浅绿色 似乎没有一个简单的方法可以做到这一点 例如 通过 Android 主题 但我找到了一个解决方法 如本页所述 http tinyurl com 342dgn3 http tiny
  • android:layout_alignParentBottom 在没有显式布局高度作为 ListView 中的行的情况下使用时会被忽略

    当我使用RelativeLayout与任一fill parent or wrap content作为高度和一个指定的元素 android layout alignParentBottom true 它被忽略并在顶部对齐 设置高度Relati

随机推荐

  • 为什么 iPhone 4、5、6 横向时宽度和高度紧凑

    我是 iOS 开发新手 刚刚学习适应性和布局 我遇到了一点困惑 根据文档 https developer apple com library ios documentation UserExperience Conceptual Mobil
  • 如何将 Javascript 字符串转码为 ISO-8859-1?

    我正在编写一个 Chrome 扩展程序 可与使用 ISO 8859 1 的网站配合使用 只是为了提供一些背景信息 我的扩展所做的是通过添加更方便的帖子表单来更快地在网站论坛中发帖 然后通过 Ajax 调用 使用 jQuery 发送写入消息的
  • 我正在使用 TestRestTemplate 来测试 @RequestParam 值如何执行

    如何将 RequestParam值发送到url enter code here ApiRestController 公共类 CityController 扩展 BaseController GetMapping cities public
  • JS Puppeteer 等待页面加载完成[重复]

    这个问题在这里已经有答案了 看到这个之后我受到启发 尝试了一下它 但我似乎错误地选择了一个网站作为启动项目 const puppeteer require puppeteer async gt const browser await pup
  • jest.config 被忽略

    我的 jest config js 中有以下内容 module exports preset ts jest presets js with ts testEnvironment jsdom 但当我运行 npm test 时它被忽略 有人可
  • 使 CSS 背景图像变暗? [复制]

    这个问题在这里已经有答案了 应该是一个相当简单的问题 在我的网站中我这样做 landing wrapper display table width 100 background url landingpagepic jpg backgrou
  • 将数据框折叠到一个变量上

    我有一个以下格式的数据框 Site Year Month Count1 Count2 Count3 Patch 1 1 May 15 12 10 1 1 1 May 8 0 5 2 1 1 May 3 1 2 3 1 1 May 4 4 1
  • 如何使用 C api 通过完整路径导入文件?

    PyObject PyImport ImportModule const char name 如何指定完整文件路径和模块名称 Like PyImport SomeFunction const char path to script cons
  • 如何在android中为ViewFlipper设置动态图像?

    我正在这样做 它正在加载静态这些图像 public class ArchiveGroup extends Activity Button btn ViewFlipper flip public void onCreate Bundle sa
  • SQL LIMIT 返回“零” - 0 - 行(PHP 中)

    当查询返回零行时 我在此查询中出现错误 错误号 1064 您的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解在第 3 行 20 20 附近使用的正确语法 从玩家 pl 中选择 pl name pl email 在
  • 在 Webview.clearView() 后多次执行 WebView.loadurl() 会导致崩溃

    在 Webview clearView 之后多次执行 WebView loadurl 会导致崩溃 安卓4 0 3 这是 logcat 输出 Build fingerprint Lenovo P700i P700i 4 0 4 IMM76D
  • 尝试创建一个“值列表”,包括表值及其下面的数字

    所以基本上说我有一个名为 设备 的表 然后其中一列是 数量 如果我想创建一个采用该数字的值列表 假设数量为 4 并且值是 数量 1 直到 gt 0 所以在本例中为 4 3 2 1 我正在使用 Oracle APEX 并且假设我需要基于 sq
  • 如何提取文本字符串中的文本

    我有一个简单的问题 我希望在不使用 VBA 的情况下解决它 但如果这是解决它的唯一方法 那就这样吧 我有一个包含多行 均为一列 的文件 每行都有如下所示的数据 1 7 82E 13 gt gi 297848936 参考 XP 00 4 氢氧
  • Android 通知大图像不起作用

    我正在创建这样的通知 Intent intent new Intent this OfferNotification class PendingIntent pIntent PendingIntent getActivity this 0
  • 之间的区别。 git 中的 (点) 和 * (星号) 通配符

    我有一个本地存储库 并试图放弃自上次提交以来的所有更改 git checkout HEAD 命令 一切工作正常 即使更改是在某个子目录中 但是当我添加一些未跟踪的文件 满足中的掩码 gitignore 对存储库的根目录说 Ignored t
  • 测试 POSIX shell 合规性?

    如何测试 shell 脚本以验证它是否符合 POSIX 标准 我有大量为各种版本的 Bash 和可能的其他 shell 编写的脚本 我希望能够确定哪些完全符合 POSIX 标准 哪些不符合 理想情况下 我想找到类似的东西lint但对于 sh
  • virtualenv 和 pyenv 之间有什么关系?

    我最近学习了如何在工作流程中使用 virtualenv 和 virtualenvwrapper 但我在一些指南中看到了 pyenv 但我似乎无法理解 pyenv 是什么以及它与 virtualenv 有何不同 相似 pyenv 是 virt
  • CSS 未应用于 Visual Studio 2012 设计器?

    我有一些 css 当我的 CSS 文件内时 这些 css 不会应用于 Visual Studio 中的设计器 但会在我发布时应用于页面 这个问题大大减慢了网站开发速度 因为我正在尝试学习 CSS 下面是 CSS 的示例 header bac
  • android 获取CountdownTimer上的剩余时间并使用剩余时间作为分数

    所以我这里有测验应用程序和计时器 所以我想要发生什么 例如 我将计时器设置为 15 秒 如果用户在 5 秒内回答问题 我希望 10 秒的剩余时间变成 10 分 它将添加到之前的分数加上您将获得的分数回答问题 所以现在我有这个 if save
  • 使用 firebaserecycleradapter 过滤 recyclerview

    我有一个带有 FirebaseRecyclerAdapter 的 RecyclerView 当用户开始在 SearchView 中输入内容时 我想用名称列表填充 RecyclerView public class SchoolsAdapte