Java 如何从StringArray获取ItemArray?

Java 如何从StringArray获取ItemArray?,java,android,Java,Android,我使用此方法将字符串数组转换为项目数组(用于将其保存在SharedReferences中) strings=newarraylist(); 用于(对象:ItemArry){ strings.add(object!=null?object.toString():null); } b1s.edit().putString(“数组”,ObjectSerializer.serialize(strings)).commit(); 但是为了在列表视图中加载它,我需要将它再次转换为项目数组(由于某些原因,我

我使用此方法将字符串数组转换为项目数组(用于将其保存在SharedReferences中)

strings=newarraylist();
用于(对象:ItemArry){
strings.add(object!=null?object.toString():null);
}
b1s.edit().putString(“数组”,ObjectSerializer.serialize(strings)).commit();
但是为了在列表视图中加载它,我需要将它再次转换为项目数组(由于某些原因,我不能在列表视图中使用字符串数组)。
我怎样才能做到这一点呢?

对此没有通用的解决方案

基本上,您希望执行与
Object.toString()
相反的操作。。。对于每个对象。没有通用的方法可以做到这一点

如果您知道items的
toString()
方法正在生成什么,并且它们生成的字符串包含原始item对象的所有信息内容,那么(理论上)可以编写一个自定义方法来解析字符串。但是您需要自己编写解析方法

真正的解决方案可能是直接序列化
ArrayList
。如有必要,解决阻止其工作的问题


你问:

是否可以将序列化项数组保存到SharedReferences

由于您使用的是
org.apache.pig
中的
ObjectSerializer
类,因此您将使用常规Java对象序列化

这意味着您可以序列化
ArrayList
,前提是
类可以序列化

而这反过来又要求:

  • 必须实现
    可序列化
    (直接或间接)和:
    • 项的所有非易失性实例字段必须可序列化,或者
    • 必须覆盖
      写对象
      读对象
      ,或
    • 还必须实现
      可外部化

要使字段可序列化,它必须是基元类型、可序列化对象类型或可序列化类型的数组。许多Java库类型实现了
可序列化的
;e、 g.基本包装器、
字符串、集合类型等等。

据我所知,您需要为对象保留“可读字符串”,并将其转换回对象。在这种情况下,我建议将对象ArrayList直接序列化为JSON,因为它具有可读性(如果需要)和易于操作(编码和解码)。您可以使用或序列化,但如果对象比较复杂,则最好使用。

添加导致问题描述出现问题的行。您的问题需要更多的代码和错误描述。这样,我可以将序列化项数组保存到SharedReferences吗?在我回答之前,您需要告诉我
ObjectSerializer
来自何处;i、 它的完全限定名是什么。我从这个问题中得到:
      strings = new ArrayList<String>();
      for (Object object : itemArrey) {
      strings.add(object != null ? object.toString() : null);
      }
      b1s.edit().putString("array", ObjectSerializer.serialize(strings)).commit();