0

我正在构建一个应用程序,它允许用户定义特定类型的多个对象,我们称它们为“人”。“Person”对象定义如下:

class Person {
  public String name;
  public int age;
}

这些“Person”对象将被序列化并存储在应用程序中,无论是在 SharedPreferences 中还是通过云存储机制。这可以被认为是处理和工作。

我的问题是我需要一个编辑器界面来允许用户更改他们集合中任何特定“Person”实例的“名称”和“年龄”。为了让我的 UI 尽可能像股票一样,我希望我的编辑器界面类似于 Android 实现的“偏好”界面。因此,我需要一种方法来加载“PreferenceActivity”并将其首选项从/保存到 POJO。

我希望这样做的原因是,我的 UI 感觉就像用户习惯使用的东西。我的另一个选择是模仿样式并自己创建所有处理代码,这将花费大量时间。

我想象该过程将覆盖“PreferenceActivity”的“加载”和“保存”功能,以通过“Intent”从提供“onCreate”的 POJO 中提取/推送值 - 并将此 POJO 作为活动结果返回给来电者。

这是可以实现的吗?

4

1 回答 1

0

这样做的目的是什么?对于包含数据的 pojo 的引用,我不明白为什么这会有用,也不知道它是如何可行的。如果可能,那么保存对象很可能是一个通用的键对象映射,您需要从中提取数据,这正是 Preferences 已经工作的方式。

如果这只是为了在 Person 对象中包含信息,为什么不创建一个基于保存的首选项创建一个的方法。

----- 补充

如果您在应用程序中添加一个静态/单一数据处理程序(存储库),它将在应用程序执行时包含所有人员,并且它对每个人都有某种标识符。然后,您可以将 Intent 中的 ID 传递给 PreferenceActivity,PreferenceActivity 将从数据处理程序中获取人员对象,并根据它填写 PreferenceActivity 的值。

将另一个 Preference 添加到名为“Save”或类似名称的 PreferenceActivity,您可以在活动中解析和绑定它。单击此按钮将获取当前输入的信息(将保存在 SharedPreferences 中)并从中创建一个 Person 实例。然后它应该将此对象传递给数据处理程序,数据处理程序会将其添加(如果 ID 已经存在,则更新它)到 Persons 的存储库。此时您可能应该考虑序列化整个存储库并保存它,一种简单的方法是将其全部 JSON 并将其放入 SharedPreferences 中。不要忘记您需要在第一次访问数据处理程序时加载此数据,以便可以访问以前保存的人员。

我还建议您为数据处理操作创建接口,以防您想添加新的或将实现替换为例如数据库操作。

这样您就可以使用 PreferenceActivity 来添加/编辑人员。即使我更愿意为它创建自己的 UI。

于 2013-07-30T15:25:32.320 回答