小编Kyl*_*uan的帖子

在填充 ObservableList 时,我是否必须从我的数据库中加载所有记录?

所以我正在将我的 Swing Java 数据库应用程序移植到 Java FX(这里仍然是初学者,我最近刚刚学习了 FXML 和 MVC 模式的基础知识,所以请耐心等待)。

我打算将现有数据库中的数据加载到“学生”ObservableList 中,以便我可以在 TableView 上显示它,但是在我的原始 Swing 代码中,我有一个搜索 TextField,当用户单击按钮或按 Enter 时,该程序:

  1. 执行搜索特定记录并检索 RecordSet 的 SQLite 命令。
  2. 基于 RecordSet 内容创建一个 DefaultTableModel
  3. 并将该 TableModel 抛出到 JTable。

然而,Java FX 是一个完全不同的野兽(或者至少在我看来是这样——不要误会我的意思,我喜欢 Java FX :D)所以我不知道该怎么做。

所以,我的问题是,我是否必须加载数据库中的所有学生,然后使用一些 Java 代码过滤掉不符合搜索条件的学生(并在搜索文本为空白时显示所有学生),或者执行我仍然使用 SQLite 来过滤和检索记录(这意味着我需要清除列表然后在每次执行搜索时添加学生,也许它也会弄乱绑定?也许这种方法也会有速度损失? 除此之外,它还将重置当前选择的记录,因为我清除了列表——基本上,糟糕的 UI 设计会对可用性产生负面影响)

根据正确的方法,还有一个后续问题(抱歉,即使在谷歌搜索之后我也真的找不到这些问题的答案):

  • 如果我从数据库中获取所有学生并在 Java 中实现搜索功能,它会不会比它应该使用更多的 RAM,因为我将所有数据库数据存储在 RAM 中,而不仅仅是搜索的数据?我的意思是,当然,即使我的低端笔记本电脑也有 4GB 的内存,但是使用比我应该更多的内存的感觉让我感到有些内疚,哈哈
  • 如果我选择在每次执行新搜索时只更新 ObservableList 的内容,它会与绑定混淆吗?我是否必须再次设置绑定?在添加新内容之前如何清除 ObservableList 的内容?

我也有将选定的表项设置为与搜索字符串匹配的第一条记录的想法,但我认为这将很难使用,因为每次搜索只能突出显示一条记录。即使我们突出显示多行,也很难浏览所有选定的项目。

请给我正确的方法,而不是“简单”的方法。这是我第一次实现模式(MVC 还是我真的在做 MVP,我不知道),我意识到我以前的程序是多么难以维护和丑陋,因为我使用了自己的风格。这是一个相对较大的项目,我需要几年来支持和改进,因此拥有干净的代码和以正确的方式做事应该有助于维护该程序的功能。

非常感谢您的帮助,我希望我在问这些问题时不会被认为是“甚至不会谷歌的愚蠢人”。请多多包涵。

java javafx

3
推荐指数
1
解决办法
479
查看次数

当用户使用其他帐户登录时,如何防止激活应用内订阅?

我正在开发一个 Android/iOS 应用程序,该应用程序使用 Ionic 和应用内购买 2来允许用户购买按月或按年订阅。然后,使用购买令牌以及到期日期将该订阅与他们的帐户(他们从应用程序注册的帐户)绑定在一起。

我面临的问题是,当用户 A使用手机 A购买订阅时,与手机 A用户 A关联的 Google/Apple 帐户都与购买关联,因此当用户 A注销而用户 B登录时同一手机上的应用程序,用户 B尚未购买订阅,因此当他们尝试购买时,应用内购买 2 自动将状态设置为“已批准/已拥有”,因为与手机A关联的 Google/Apple 帐户已经购买了该应用程序订阅,这会欺骗应用程序认为用户 B也购买了订阅,因此激活用户 B的订阅。

如何防止多个用户登录应用程序并重复使用与 Google/Apple 帐户关联的订阅?我将非常感谢任何与此相关的提示或技巧。

这可能是一个令人困惑的问题,如果是这样的话,我深表歉意。

如果有任何帮助,我将不胜感激。先感谢您!

android in-app-purchase ios ionic-framework

2
推荐指数
1
解决办法
622
查看次数

标签 统计

android ×1

in-app-purchase ×1

ionic-framework ×1

ios ×1

java ×1

javafx ×1