1

I'm displaying images from resource/drawable folder in full screen using viewpager. It's working fine and are sliding well. now i want to save image name in sdcard,but i am not able to get image file name. if any one will please help me . I have google it, i didn't get correct solution for my expection.

code

public class MainActivity extends Activity{

        //private static Context context;
        ExtendedViewPager mViewPager;
        private static Uri imageUri;

        @Override
        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        mViewPager = (ExtendedViewPager) findViewById(R.id.view_pager);
        mViewPager.setAdapter(new TouchImageAdapter());


    }

    static class TouchImageAdapter extends PagerAdapter {

        private static int[] images = { R.drawable.nature_1, R.drawable.nature_2, R.drawable.nature_3, R.drawable.nature_4, R.drawable.nature_5 };

        }
        @Override
        public int getCount() {
                return images.length;
        }

        @Override
        public View instantiateItem(ViewGroup container, int position) {
                //Context context = container.getContext();
            TouchImageView img = new TouchImageView(container.getContext());
            img.setImageResource(images[position]);
            img.setOnClickListener(new OnClickListener() {

                                @Override
                                public void onClick(View v) {

                               int imagid=images[position];
 System.out.println("Image name " + images[position]);
 bm = BitmapFactory.decodeStream(v.getResources().getDrawable(imagid));// here i need to pass my resId, i can't able to pass

                                }
                        });

            //img.setScaleType(TouchImageView.ScaleType.CENTER_CROP);
            container.addView(img, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
            return img;
        }

        @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;
        }

    }


}
Make it Simple
  • 1,832
  • 5
  • 32
  • 57

1 Answers1

2

create a String[] which contains file name and set it's itme to img as tag and in onClick get the tag. do something like this

 private static String[] imagesName = {"fiel1","file2",.....};
  .
  .   
 img.setImageResource(images[position]);
 img.setTag(imagesName[position]);      
 img.setOnClickListener(new OnClickListener() {

                           @Override
                            public void onClick(View v) {
                            String filename = v.getTag().toString(); 
 }   
 }     

Edit

If you don't want to create String[] then set the images[position] as Tag of img and in onClick get it from tag like getResources().getResourceName((Integer)v.getTag());

This helps me.

Make it Simple
  • 1,832
  • 5
  • 32
  • 57
maddy d
  • 1,530
  • 2
  • 12
  • 23