Search code examples
androidandroid-viewpagerandroid-sdcard

Loading Images from SD card to ViewPager Android


I need to Load Images from a folder in SD Card into a ViewPager. This is what i have managed so far.

public Drawable getImageFromSdCard(String imageName) {
    Drawable d = null;
    try {
        String path = Environment.getExternalStorageDirectory().toString()
                + "/YourSubDirectory/";
        Bitmap bitmap = BitmapFactory.decodeFile(path + "/" + imageName
                + ".png");
        d = new BitmapDrawable(bitmap);
    } catch (IllegalArgumentException e) {
        // TODO: handle exception
    }
    return d;

}

How can i set this as a ViewPager ?


Solution

  • You need make adapter that extends PagerAdapter then set adapter to view pager

    Try below code:

    ViewPager mViewPager = (ViewPager) findViewById(R.id.view_pager);
    mViewPager.setAdapter(new TouchImageAdapter());
    

    TouchImageAdapter class:

    class TouchImageAdapter extends PagerAdapter {
    
    
            @Override
            public int getCount() {
                return 1;
            }
    
            @Override
            public View instantiateItem(ViewGroup container, int position) {
                ImageView img = new ImageView(container.getContext());
                img.setImageDrawable(getImageFromSdCard(filename));
                container.addView(img, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
                return img;
            }
    
            public int getItemPosition(Object object) {
                return POSITION_NONE;
            }
    
            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                container.removeView((View) object);
            }
    
            @Override
            public boolean isViewFromObject(View view, Object object) {
                return view == object;
            }
    
    
        }
    

    Here is your method used in adapter class

    public Drawable getImageFromSdCard(String imageName) {
        Drawable d = null;
        try {
            String path = Environment.getExternalStorageDirectory().toString()
                    + "/YourSubDirectory/";
            Bitmap bitmap = BitmapFactory.decodeFile(path + "/" + imageName
                    + ".png");
            d = new BitmapDrawable(bitmap);
        } catch (IllegalArgumentException e) {
            // TODO: handle exception
        }
        return d;
    
    }
    

    Hope this helps!