在列表中组织 Android Realm 数据

2024-04-29

我正在考虑将我们当前的应用程序迁移到领域,并试图找出将数据组织成令的最佳方式。对于这个问题我将重点关注Photo我的数据模型的对象(但还有其他对象)。

我的所有数据对象均来自具有以下端点的 API:getPopular(), getNearbyPhotos(lat, lng), getUserPhotos(userId), getAlbumPhotos(albumId), getCollection(type)。在大多数端点上还有更多参数,例如sort=best/chronological.

我们目前正在使用这个非关系型数据库 https://github.com/eyeem/potato在允许仅使用对象对对象列表进行排序和检索的项目上listName。我们使用listName作为端点+参数的组合。

Realm(作为关系数据库)使用标准查询,例如:

realm.where(User.class)
     .contains("name", "Doe")
     .findAll();

当所有数据在本地可用时,效果很好,但这里的问题是,这些查询的许多数据都保存在服务器端,并且从未发送到客户端。例如Photo模型不包含位置也不包含分数best排序。

在我当前的测试项目中,我正在通过创建一个来解决这个问题ListPhoto类似于我们当前项目使用对象的方式:

public class ListPhoto extends RealmObject {
   @PrimaryKey public String id;
   public RealmList<Photo> list;
}

并使用实际的 API 端点和参数作为id.所以我可以通过简单的查询找到这些对象

ListPhoto listPhoto = realm
          .where(ListPhoto.class)
          .equalTo("id", id)
          .findFirst();

但通过这种方法,我创建了一个额外的抽象层来简单地存储分组和排序元数据,我对此并不满意,我在这里问:

我如何能够仅根据插入的顺序和组来查询领域上的数据,而不使用我想出的这个肮脏的技巧?

edit:

后续问题:查询其他对象上包含的领域数据 https://stackoverflow.com/questions/38220180/query-realm-data-contained-on-other-object


但因为它的数据永远不会以可视方式呈现给用户,所以它不会发送到客户端(我想迁移到 Realm,但最好在不必更改服务器端数据模型和端点行为的情况下做到这一点)

这很可怜,但也可以理解。

您可以做的就是为您的领域照片对象提供字段,例如

public class Photo extends RealmObject {
    // other fields

    private double latitude;
    private double longitude;
    private String score;
}

然后,您可以像现在一样使用 API 端点和参数查询服务器。

当结果出现时,您将它们存储在领域中,并为它们分配纬度/经度/分数的值。此时您可以使用它们,因为您刚刚在服务器查询中使用了它们。

所以如果你查询api/getNearbyPhotos(1, 2)?sort=best:
(伪代码)

api.fetch("getNearbyPhotos(1, 2)?sort=best", new GetPhotoCompleteListener {
    @Override
    void onSuccess(List<Photo> photos) {
        // assuming gson or something has already parsed the server response into photo objects
        for (Photo p : photos) {
            p.setLatitude(1);
            p.setLongitude(2);
            p.setScore("best");
        }
        realm.copyToRealmOrUpdate(photos);
    }
}

现在,您在领域中拥有了一堆照片对象,您可以像在服务器上一样进行查询。

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

在列表中组织 Android Realm 数据 的相关文章

  • 与 Admob 广告单元 ID 混淆

    我跟着tutorial https developers google com admob android quick start在我的应用程序中创建广告横幅 到目前为止 这有效 我可以看到测试广告 但是 本教程指示我在两个不同的位置使用两
  • 在自定义对象中创建时粘性服务不会重新启动

    我有一个具有绑定服务的单例对象 我希望它重新启动 当我从启动器启动应用程序时 单例对象将初始化并绑定到这个现有的服务实例 以下是在单例中创建和绑定服务的代码 public class MyState private static MySta
  • 共同的偏好不断消失

    我正在使用共享首选项来存储我的应用程序的登录凭据 除了一个用户之外 一切正常 一段时间后 共享偏好似乎会以某种方式重置或清除 我已针对该用户调整了我的应用程序 使其不再清除他的共享偏好设置 这样我就可以确定这不是我的应用程序的错 但即使在这
  • Delphi XE7 Android 全屏(隐藏软键)

    如何在XE7中全屏显示 隐藏顶部 标题 和底部 软键 工具栏 在 XE6 中 我可以通过在应用程序部分写入来调整 AndroidManifest 以使我的应用程序全屏显示并且没有操作栏 android theme android style
  • KitKat(及更低版本)设备上的 Android Material Design

    我将在我们学校开发一个 Android 应用程序作为一个项目 我想使用 Google 的新 Material Design 但我知道它仅适用于 Android L 设备 Jack Underwood 最近发布了名为 Today Calend
  • (Ionic 2)尝试回退到 Cordova-lib 执行时发生错误:TypeError:无法读取未定义的属性“then”

    Edit 使用 ionic 2 时会发生这种情况 我知道它还不稳定 但我认为可能有一些解决方案 因为其他人似乎没有遇到这个问题 Edit end 由于某种原因 我在尝试使用 ionic build android 和 ionic build
  • 接近语法错误(代码1)插入Android SQLite

    我正在创建一个通讯录应用程序 用户可以在其中输入姓名 电子邮件地址和号码 我希望将此数据保存在数据库中 但我似乎无法使插入方法起作用 我收到的错误是 android database sqlite SQLiteException near
  • Android Studio 在编译时未检测到支持库

    由于 Android Studio 将成为 Android 开发的默认 IDE 因此我决定将现有项目迁移到 Android studio 中 项目结构似乎不同 我的项目中的文件夹层次结构如下 Complete Project gt idea
  • 获取 AlarmManager 中活动的 PendingIntents 列表

    我有办法获取活动列表PendingIntent在设备中 我开始工作AlarmManager我想看看我的PendingIntents 已正确创建和删除 也很高兴看到其他什么PendingIntent在那里 只是为了看看某些应用程序是否正在做一
  • Firebase:如何在Android应用程序中设置默认通知渠道?

    如何设置default通知渠道通知消息当应用程序在后台运行时会出现什么情况 默认情况下 这些消息使用 杂项 通道 如你看到的在官方文档中 https firebase google com docs cloud messaging andr
  • Android 版 Robotium - solo.searchText () 不起作用

    我在使用 Robotium 时遇到 searchText 函数问题 我正在寻找这个字符串
  • 在 Jetpack Compose 中启动动画矢量 Drawable

    我有一个动画矢量可绘制R drawable my anim 我想在 Jetpack Compose 中展示并开始 可绘制对象显示 渲染正确 但动画未启动 这是撰写视图 Composable fun SplashView Surface mo
  • Android 启动器快捷方式

    我制作了一个简单的打卡 打卡时钟应用程序 我想向用户添加在主屏幕上创建快捷方式的选项 该快捷方式将切换应用程序的状态 超时 超时 但我根本不希望此快捷方式在屏幕上打开应用程序 这是我的 setupShortcut private void
  • 如何创建像谷歌位置历史记录一样的Android时间轴视图?

    我想设计像谷歌位置历史这样的用户界面 我必须为我正在使用的应用程序复制此 UIRecyclerView 每行都是水平的LinearLayout其中包含右侧的图标 线条和视图 该线是一个FrameLayout具有圆形背景和半透明圆圈Views
  • Android 设备上的静默安装

    我已经接受了一段时间了 在 Android 上静默安装应用程序是不可能的 也就是说 让程序安装捆绑为 APK 的应用程序 而不提供标准操作系统安装提示并完成应用程序安装程序活动 但现在我已经拿到了 Appbrain 快速网络安装程序的副本
  • 如何将设备连接到Eclipse?

    我无法解决这个简单的问题 我正在尝试通过 USB 电缆将我的设备连接到 Eclipse 在我的 PC 上 我已经安装了 Eclipse 和 Android SDK 并且在模拟器上运行该程序运行良好 我已在我的电脑上下载并安装了 Samsun
  • 通过 ADB 拔出设备:“找不到服务”

    我必须测试我的应用程序在打瞌睡模式下的行为 根据文档 https developer android com training monitoring device state doze standby html testing doze 我
  • Android:有没有办法以毫安为单位获取设备的电池容量?

    我想获取设备的电池容量来进行一些电池消耗计算 是否可以以某种方式获取它 例如 三星 Galaxy Note 2 的电池容量为 3100mAh 谢谢你的帮助 知道了 在 SDK 中无法直接找到任何内容 但可以使用反射来完成 这是工作代码 pu
  • 使用 Espresso 检查 EditText 的字体大小、高度和宽度

    如何使用 Espresso 检查 EditText 的字体大小 高度和宽度 目前要分割我使用的文本 onView withId R id editText1 perform clearText typeText Amr 并阅读文本 onVi
  • 找到 Android 浏览器中使用的 webkit 版本?

    有没有办法知道某些特定手机上的 Android 浏览器使用的是哪个版本的 webkit 软件 如果有一个您可以浏览以获取该信息的 URL 那就太好了 但任何其他方式也很好 如果你知道 webkit 版本 你就知道 html5 支持多少 至少

随机推荐

  • 如何清除 asyncfileupload 的文本框值..?

    有一个按钮 MyButton 单击此按钮时 会出现一个 modalpopup MyPopup 其中包含一个 asyncfileupload ajax 控件 确定 按钮和 取消 按钮 asyncfileupload 功能的浏览功能工作正常 没
  • 从已知视频 ID 中获取 YouTube 视频标题

    我想在视频 ID 已知时仅使用 JavaScript 获取 YouTube 视频标题 是否可以 是的 可以使用 Javascript 和 JSON https developers google com youtube 2 0 develo
  • 如何在 uiview 中添加边框?

    我有一个 uiview 我想在这个 UIVIew 旁边添加一个边框 大约占 UIView 的 75 任何人都可以帮忙解决这个问题吗 我可以找到将边界绘制到外面的解决方案 好吧 不只是可以设置一个小属性来将边框与外部对齐 它向内部对齐绘制 因
  • d3.js v4 中的 d3.locale(),本地化

    我正在使用 d3 js 制作图表 现在想将其更新到 v4 结果发现d3 locale 由于所有日期格式的翻译都采用不同的语言 因此不再起作用 我该如何解决这个问题 我正在挖掘论坛 但对于 v4 我并没有真正找到它 你必须使用d3 timeF
  • Fortran 函数:指针作为实际参数,目标作为形式

    我正在尝试破译 Fortran 代码 它将指向函数的指针作为实际参数传递 而形式参数则是目标 它在主程序中定义并分配一个 globalDATA 类型的指针 然后调用一个传递该指针的函数 module dataGLOBAL type glob
  • 使用 Jenkins 作业将 Helm 图表部署到 Kubernetes

    我想创建一个 Jenkins 作业 将 Helm Chart 部署到 Kubernetes 集群中 Helm 图表存储在 Bitbucket 存储库中 pipeline agent any stages stage Download Hel
  • 如何快速计算集合的所有交集的包含顺序

    这是后续如何在python中快速获取集合的所有交集 https stackoverflow com questions 37622153 我有一个整数有限集合 Ai 的有限集合 A A1 Ak 我想计算Python下列 A 子集的所有交集
  • Web Audio Api:如何添加工作卷积器?

    我想学习 做的事情 如何使用脉冲响应在下面的代码沙箱中设置一个简单的工作卷积器 混响 我认为这与设置过滤器类似 但事情似乎完全不同 我尝试过的 与所有新技术一样 事物变化很快 因此很难知道哪些实施是正确的 哪些实施是错误的 我查看了无数的
  • Android 中使用 Base64 编码的公钥进行 RSA 加密

    如何使用base 64编码的公钥对字节数组进行RSA加密 在阅读了几篇关于如何在 Java 中进行 RSA 加密的文章 谷歌搜索 后 发现了以下片段 public byte rsaEncrypt byte data PublicKey pu
  • RichTextFx CodeArea 中的文本背景颜色

    我正在使用 RichTextFx CodeArea 来突出显示我的代码 我想更改某些关键字的文本背景颜色并使用下面的 css parameter rtfx background color yellow But it s changes b
  • 警报和确认函数是内置于 JavaScript 中的,还是 DOM 的一部分?

    Are the alert and confirmJavaScript 中内置的函数 还是 DOM 的一部分 如果您能给我推荐一份参考资料 让我能够轻松了解 JavaScript 中直接内置了哪些函数 那就加分了 它们是通常所说的一部分DO
  • Google 地图小部件错误无法检索 com.google.android.libraries.consent 验证程序的标志快照

    当我进入带有 Google 地图小部件的页面时出现以下错误 W DynamiteModule 17290 Local module descriptor class for com google android gms googlecert
  • 如何通过反射获取当前属性名称?

    当我通过反射进入其中时 我想获取属性名称 是否可以 我有这样的代码 public CarType Car get return Wheel this Wheel set this Wheel value 因为我需要更多这样的属性 所以我想做
  • 如何通过 docker-php-ext-install 安装 php 扩展?

    为了解决问题 https stackoverflow com questions 37526509 how to install pdo driver in php docker image 我现在尝试通过安装 mysql pdo dock
  • 使用字典键和值填充 DataGridViewComboBoxColumn

    我有一本字典 其键为三个字母的国家 地区代码 其值为国家 地区名称 Dictionary
  • IIS 6 网站根目录与应用程序?解决Url()?

    IIS 6 ASP NET 3 5 C NET 我们遇到一个问题 即同一组文件的行为会有所不同 具体取决于它是根 IIS 网站还是 IIS 网站下的应用程序 使用生成的网址解析网址 http msdn microsoft com en us
  • 带下拉列表的过滤器 Laravel

    我有一个下拉菜单 用于按类别过滤图像 我的第一个问题是我希望在过滤器之后选择选定的选项 我该怎么做 这是我第一次使用 Laravel 我想知道我的解决方案是否朝着正确的方向前进 现在我在两个函数中有相同的代码 我计划修复这个问题 但我真的无
  • 在 Kubernetes API 中启用 CORS

    有没有办法在 Kubernetes API 上启用 CORS 以便我可以使用不同的域向 Kubernetes API 发送 ajax 请求 通过将 cors allowed origins http 参数添加到 etc default ku
  • MySQL:查询之间的最佳索引

    我有一个具有以下结构的表 CREATE TABLE geo ip id bigint 20 NOT NULL AUTO INCREMENT start ip int 10 unsigned NOT NULL end ip int 10 un
  • 在列表中组织 Android Realm 数据

    我正在考虑将我们当前的应用程序迁移到领域 并试图找出将数据组织成令的最佳方式 对于这个问题我将重点关注Photo我的数据模型的对象 但还有其他对象 我的所有数据对象均来自具有以下端点的 API getPopular getNearbyPho