Java 如何从StringArray获取ItemArray?
我使用此方法将字符串数组转换为项目数组(用于将其保存在SharedReferences中)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(); 但是为了在列表视图中加载它,我需要将它再次转换为项目数组(由于某些原因,我
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();