I’m trying to speed up my ListView by cacheing the images and loading them from the phone rather than the internet when scrolling the list. However, I run into an exception when I try to serialize the Drawable object. This is my function:
private void cacheImage(Drawable dr, Article a){
FileOutputStream fos;
try {
fos = openFileOutput(a.getArticleId().toString(), Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(dr);
oos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
This nifty bit of code results in:
java.io.NotSerializableException: android.graphics.drawable.BitmapDrawable
What is the best approach to serialize these images?
You should only need to cache bitmap (drawables) that you i.e. fetched from the internet. All other drawables are most likely in your apk.
If you want to write a Bitmap to file you can use the
Bitmapclass: