我试图将drawable的arraylist保存到文件中。
这是我的班级。
public class SeccionItem implements Serializable{
String name;
String text;
ArrayList<Drawable> img;
SeccionItem()
{
img = new ArrayList<Drawable>();
}
}
我有一个类的arraylist,我想使用objectoutputstream将其写入文件,但我认为drawable不能序列化,所以我可以使用其他类型来存储图像吗?喜欢位图?或者有没有其他方法来存储该arraylist?覆盖writeObject方法?。
我使用此方法下载图像
public static Drawable getBitmap(String image_url) {
try {
URL url = new URL(image_url);
InputStream is = (InputStream)url.getContent();
Drawable b= Drawable.createFromStream(is, " ");
if(b==null){
Log.d("this","null");
}
return b;
}catch(Exception ex) {
ex.printStackTrace();
return null;
}
}
答案 0 :(得分:2)
Bitmap
或Drawable
都不是serializable
。您可以序列化信息以重建Drawable
。例如,您可以序列化ArrayList<Integer>
,其中Intever是Drawable的id。
那些drawables是从互联网上下载的,我想存储它 下次我不必再下载它。
因此,您可以将其存储在SD卡上,并且您可以检查该文件是否存在。
写一个文件
public static void copy(InputStream is, File out) throws IOException {
byte[] buffer = new byte[BUFFER_LEN];
FileOutputStream fos = new FileOutputStream(out);
try {
int read = 0;
while ((read = is.read(buffer, 0, BUFFER_LEN)) >= 0) {
fos.write(buffer, 0, read);
}
fos.flush();
} finally {
close(fos);
}
fos = null;
buffer = null;
}