1

ドローアブルの配列リストをファイルに保存しようとしています。

これが私のクラスです。

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

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

そのクラスの配列リストがあり、objectoutputstream を使用してファイルに書き込みたいのですが、ドローアブルをシリアル化できないと思うので、別のタイプを使用して画像を保存できますか? ビットマップのような?または、その配列リストを保存する他の方法はありますか? 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でもDrawableありませんserializable。情報をシリアル化して、Drawable. たとえばArrayList<Integer>、Interever が 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;
}
于 2013-06-11T10:45:40.583 に答える