title: How to create a custom gallery having images of a particular folder on SD card?
body: <p>I have seen the API demos of android (/ApiDemos/src/com/example/android/apis/view/Gallery1.java) , but they take images from the res folder within the project. I want to create a gallery of the images which are put up in the folder: <strong>/mnt/sdcard/Android/data/com.myapp/files/Pictures/</strong></p>
  
  <p>All i could come up was this code, which, i suppose, displays all images. </p>
  
  <pre><code>public class ExistingPicGallery extends Activity {
  
  private Cursor cursor;
  private int columnIndex;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.gallery1);
      Gallery g=(Gallery)findViewById(R.id.gallery1);
      String[] projection = {MediaStore.Images.ImageColumns._ID,MediaStore.Images.Thumbnails.IMAGE_ID, 
              MediaStore.Images.Thumbnails.KIND};
      // Create the cursor pointing to the SDCard
      String selection = MediaStore.Images.Thumbnails.KIND +
              "="  + // Select only mini's 
                              MediaStore.Images.Thumbnails.MINI_KIND; 
      cursor = managedQuery( MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
              projection, 
              selection,
              null,
              null);
      // Get the column index of the image ID
      columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);
      g.setAdapter(new ImageAdapter(this));
  
      g.setOnItemClickListener(new OnItemClickListener() {
          public void onItemClick(AdapterView parent, View v, int position, long id) {
              Toast.makeText(ExistingPicGallery.this, "" + position, Toast.LENGTH_SHORT).show();
          }
      });
  
  }
  
  
  
   public class ImageAdapter extends BaseAdapter {
  
       int mGalleryItemBackground;
  
        public ImageAdapter(Context c) {
              context = c;
  
              TypedArray a = obtainStyledAttributes(R.styleable.ExistingPicGallery);
              mGalleryItemBackground = a.getResourceId(
                      R.styleable.ExistingPicGallery_android_galleryItemBackground, 0);
              a.recycle();
          }
  
          public int getCount() {
              return cursor.getCount();
          }
  
          public Object getItem(int position) {
              return position;
          }
  
          public long getItemId(int position) {
              return position;
          }
  
          public View getView(int position, View convertView, ViewGroup parent) {
              ImageView i = new ImageView(context);
              // Move cursor to current position
              cursor.moveToPosition(position);
              // Get the current value for the requested column
              int imageID = cursor.getInt(columnIndex);
              // obtain the image URI
              Uri uri = Uri.withAppendedPath( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Integer.toString(imageID) );
              String url = uri.toString();
              // Set the content of the image based on the image URI
              int originalImageId = Integer.parseInt(url.substring(url.lastIndexOf("/") + 1, url.length()));
              Bitmap b = MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(),
                              originalImageId, MediaStore.Images.Thumbnails.MINI_KIND, null);
              i.setImageBitmap(b);
              i.setLayoutParams(new Gallery.LayoutParams(150, 100));
              i.setScaleType(ImageView.ScaleType.FIT_XY);
              i.setBackgroundResource(0);
              return i;
          }
  
          private Context context;
  
  
          ;
      }
  }
  </code></pre>
  
  <p>I have spent a lot of time looking for its solution, but no success..</p>