I am trying to create gallery with photos from sdcard. I have a database table. One of the columns in the table has a path to a photo.
I am following this link as a guideline, but this sample code retrieves image ids from res/drawable directory. I am not sure how to modify it to make my code work.
http://saigeethamn.blogspot.com/2010/05/gallery-view-android-developer-tutorial.html
But as mentioned, I want to display photos with whatever images exist in the database table. The following code is ImageAdapter.
public class ImageAdapter extends BaseAdapter { private Context ctx; int imageBackground; public ImageAdapter(Context c) { ctx = c; TypedArray ta = obtainStyledAttributes(R.styleable.milestone_style); imageBackground = ta.getResourceId(R.styleable.milestone_style_android_galleryItemBackground, 1); ta.recycle(); } @Override public int getCount() { return imagePhotosLocations.length; } @Override public Object getItem(int arg0) { return arg0; } @Override public long getItemId(int arg0) { return arg0; } @Override public View getView(int position, View arg1, ViewGroup arg2) { if (milestones != null && !milestones.isEmpty()) { Milestone milestone = milestones.get(0); String imageFileLocation = milestone.getFileLocation(); System.out.println("imageFileLocation="+imageFileLocation); BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 26; Bitmap b; ImageView iv = new ImageView(ctx); try { if (imageFileLocation.startsWith("content://")) { b = BitmapFactory.decodeStream(getContentResolver().openInputStream(Uri.parse(imageFileLocation)), null, options); } else { b = BitmapFactory.decodeFile(imageFileLocation, options); } iv.setImageBitmap(b); iv.setScaleType(ImageView.ScaleType.FIT_XY); iv.setLayoutParams(new Gallery.LayoutParams(150, 120)); // milestoneImageView.setBackgroundResource(imageBackground); } catch (FileNotFoundException e) { e.printStackTrace(); } return iv; } return null; } } And this is one of the methods in activity.
private String[] imagePhotosLocations; private void init() { milestones = getMilestones(); imagePhotosLocations = new String[milestones.size()]; int index = 0; for (Milestone milestone : milestones) { imagePhotosLocations[index++] = milestone.getFileLocation(); } } private void initializeGallery() { milestoneImageView = (ImageView) this.findViewById(R.id.imagePhoto); Gallery milestoneGallery = (Gallery) this.findViewById(R.id.milestoneGallery); if (milestoneGallery == null) { throw new IllegalArgumentException("milestoneGallery can not be null."); } milestoneGallery.setAdapter(new ImageAdapter(this)); milestoneGallery.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int which, long arg3) { String imageFileLocation = imagePhotosLocations[which]; BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 26; Bitmap b; try { if (imageFileLocation.startsWith("content://")) { b = BitmapFactory.decodeStream(getContentResolver().openInputStream(Uri.parse(imageFileLocation)), null, options); } else { b = BitmapFactory.decodeFile(imageFileLocation, options); } milestoneImageView.setImageBitmap(b); } catch (FileNotFoundException e) { e.printStackTrace(); } } }); }