Android 首选项活动存储/加载自定义源中的值

Android 首选项活动存储/加载自定义源中的值,android,storage,preferenceactivity,Android,Storage,Preferenceactivity,我正在开发一个应用程序,它允许用户定义一个特定类型的多个对象,让我们称它们为“Person”。“人”对象的定义如下: class Person { public String name; public int age; } 这些“Person”对象将被序列化并存储在应用程序中,可以是SharedReferences,也可以是云存储机制。这可以被认为是处理和工作 我的问题是,我需要一个编辑器界面,允许用户更改其集合中任何特定“Person”实例的“name”和“age”。为了让我的UI感

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

class Person {
  public String name;
  public int age;
}
这些“Person”对象将被序列化并存储在应用程序中,可以是SharedReferences,也可以是云存储机制。这可以被认为是处理和工作

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

我希望这样做的原因是,我有一个用户界面,感觉像是用户习惯使用的东西。我的另一个选择是模仿这种风格,自己创建所有处理代码,这将花费很多时间

我设想这个过程将覆盖“PreferenceActivity”的“load”和“save”函数,通过“Intent”从POJO提供的“onCreate”中拉/推取值,并将此POJO作为活动结果返回给调用者


这是可以实现的吗?

这样做的目的是什么?我不明白为什么这会有用,也不明白它在包含数据的pojo参考方面如何可行。如果可能的话,保存对象很可能是一个通用的键对象映射,您需要从中提取数据,这正是首选项的工作方式

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

-----添加物

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

向名为“保存”或类似的PreferenceActivity添加另一个首选项,您可以在activity中解析并绑定该首选项。单击时,将获取当前输入的信息(将保存在SharedReferences中),并从中创建Person实例。然后,它应该将这个对象传递给数据处理程序,数据处理程序将把它添加到人员存储库中(如果ID已经存在,则更新它)。此时,您应该考虑将整个存储库序列化并保存它,一个简单的方法就是JSON IT并将其放入SyrdPoopy中。不要忘记,您需要在第一次访问数据处理程序时加载此数据,以便可以访问以前保存的人员

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


这样,您就可以使用PreferenceActivity来添加/编辑人员。尽管我更喜欢为它创建自己的UI。

我有多个“Person”对象,我只想使用preferences系统的外观来设置每个对象。因此,每次加载活动时,设置将来自不同的“人”——而不是单个人。可以将其视为特定“Person”对象的首选项。PreferenceActivity的使用方式是存储在整个应用程序中共享的值,因为应用程序的上下文将决定加载哪些首选项。因此,整个应用程序将有一个名称和一个年龄。当然,可以绕过它,让活动创建一个Person对象并将其保存到其他地方,这意味着每次都会有一个新的Person添加到其他Person中。但是那样做有点不合逻辑。对不起,我认为你没有理解我的问题。我很感激你的帮助,但我还没有解释清楚。我会重新回答这个问题,以更好地反映我的问题。添加一些用户故事是一个好主意,可以将其置于上下文中。同意。我已经更新了问题。基本上,我只需要首选项活动的UI,我想劫持load/save方法以使用我的POJO作为数据源。