将数组的drawable保存到文件Android

时间:2013-06-11 10:40:15

标签: android arraylist android-drawable

我试图将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;
      }
  }

1 个答案:

答案 0 :(得分:2)

BitmapDrawable都不是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;
}