gpt4 book ai didi

android - 在 Android 中保存大量复选框状态的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-29 22:31:59 26 4
gpt4 key购买 nike

我在一个 Activity 上有大约 34 个复选框,我必须标记和取消标记。我想保存每个复选框的状态。

我一直想要这个。那么我应该有一个 sqlite 表还是首选项?

如果推荐sqlite表,那么理想的表结构设计应该是怎样的?

最佳答案

您可以通过使用 SQLite 或首选项来完成。虽然...您想要做的事情有点简单,那么您为什么要关心创建表、创建 SQliteOpenHelper 对象、设计表等。首选项方法更简单。

所以...这里最重要的是如何识别复选框。如果您只有 34 个静态复选框(这意味着它们不会改变其顺序)并且它们被放入一个数组中(这将是理想的),那么您就可以轻松搞定。

您可能知道,首选项编辑器不允许保存数组。所以你有一些选择:

  • 将每个状态保存到不同的偏好槽中(例如:putBoolean("checkbox2", true); putBoolean("checkbox3", false); 等)
  • 将所有状态保存到一个字符串中:putString("checkboxes_state", "10101011100011010");这样您将拥有一个包含 34 个字符的字符串,每个字符代表一个状态。
  • 如果你想要效率,你可以用一个简单的 long 等于或小于 17179869183 来表示所有状态。例如 putLong("checkboxes_state", 17179869183) 意味着所有复选框都被选中(因为它的二进制表示是 1111111111111111111111111111111111)。更多示例:
    • 12159999103 = 1011010100110010101101110001111111
    • 1 = 0000000000000000000000000000000001,表示仅选中最后一个复选框。

编辑

关于你为什么最后一个效率更高的问题,我简单解释一下。第一个意味着使用 34 个首选项槽(实际上我不知道它们是如何存储的;希望 android 团队负责性能)。第二种方法将使用 34 个字符的字符串;因此,String 对象的最小大小为:

minimum String memory usage (bytes) = 8 * (int) ((34 * 2 + 45) / 8) = 113 bytes

这意味着该长度的字符串将占用至少 113 个字节。另一方面,只使用一个 long 将只占用 8 个字节。使用的字节越少,您的应用程序就会越快(因为 Android 必须处理和保存更少的字节)。

关于android - 在 Android 中保存大量复选框状态的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3689380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com