1

我试图将可绘制的数组列表保存到文件中。

这是我的课。

public class SeccionItem implements Serializable{
    String name;
    String text;
    ArrayList<Drawable> img;

    SeccionItem()
    {
        img = new ArrayList<Drawable>();
    }
}

我有该类的arraylist,我想使用objectoutputstream将它写入文件,但我认为drawable不能序列化,所以我可以使用另一种类型来存储图像吗?像位图?还是有任何其他方式来存储该数组列表?覆盖 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;
      }
  }
4

1 回答 1

2

既不是Bitmap也不Drawableserializable。您可以序列化信息以重建您的Drawable. 例如,您可以序列化ArrayList<Integer>Intever 是 Drawable 的 ID。

该drawables是从互联网上下载的,我想存储它,所以下次我不必再次下载它。

所以你可以将它存储在 sdcard 上,下次你可以检查文件是否存在。

写入文件

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;
}
于 2013-06-11T10:45:40.583 回答