我有一个应用程序,可以获取uri和图像的名称并返回 arrayList
属于 ArrayList<ImageModel>
. 其中图像模型包括 uri
及 name
两个变量和 Getter
及 Setter
每个人。
try {
FileOutputStream outputStreamWriter = getContext().openFileOutput("config.txt", Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(outputStreamWriter);
oos.writeObject(arrayList);
oos.close();
outputStreamWriter.close();
} catch (IOException e) {
Log.e("Exception", "File write failed: " + e.toString());
}
当我试图拯救时 arrayList
使用上面的方法它抛出 java.io.NotSerializableException: android.net.Uri$HierarchicalUri
例外。但是,我的 ImageModel
工具 Serializable
.
try {
FileInputStream fis = getContext().openFileInput("config.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
Object object = ois.readObject();
return object;
} catch (Exception ex) {
return null;
}
因为文件未被写入,所以此读取方法将返回null。所以,我需要合适的解决方案来保存它 arrayList
到本地存储并检索它。此外,我将通过uri加载图像 arrayList.get()
方法。所以,我想 ArrayList
这是必须的。
1条答案
按热度按时间nr9pn0ug1#
您不能直接将对象保存到存储器中,必须将它们序列化,然后将这些序列化数据存储到存储器中。您必须读取序列化的数据,然后将其反序列化以获取对象。更多关于序列化的信息
在代码中,
oos.writeObject()
要求传递的对象必须是可序列化的,但您的imagemodel不是因为具有uri类型的成员。可能的解决方法:将imagemodel类修改为可序列化。并保持存储读/写逻辑不变。
imagemodel类
还有其他序列化选项(即json),您也可以使用它们。