I am trying to add images in Sqlite DB and listing the images from DB to listview.... I am storing the image path to get image.
When I list the images from DB in device I am getting error like java.lang.OutOfMemoryError: bitmap size exceeds VM budget
Do I clear heap memory every time. How to correct this.. Here is my code.
LView.class
mySQLiteAdapter = new SQLiteAdapter(this);
mySQLiteAdapter.openToWrite();
mAlbum = (ImageView) findViewById(R.id.iv);
mAlbum.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, IMG);
}
});
Button click = (Button) findViewById(R.id.button);
click.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mySQLiteAdapter.insert(str);
System.out.println(str+" Added");
Intent intent = new Intent(LView.this, MyList.class);
startActivity(intent);
}
});`
`
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case 1:
if(resultCode == RESULT_OK) {
Uri selectedUri = data.getData();
str = getPath(selectedUri);
Bitmap bitmap;
try {
bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(selectedUri));
mAlbum.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
}
}
}
// Converting image path Uri to String path to store in DB
public String getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cur = managedQuery(uri, projection, null, null, null);
int columnIndex = cur.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cur.moveToFirst();
return cur.getString(columnIndex);
}`
Pls suggest me... Thanks in advance.