nick
nick

Reputation: 131

Gridview onclick images display imageview as gallery view using viewpager

My apps display images as gridview and click on any image display gallery view allow to swipe left and right using viewpager. My code as below,

public class MemorialPhotoAlbumViewpager extends FragmentActivity {

static Activity MemorialPhotoAlbumViewpagerActivity;
int positionstate = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

     Intent intent = getIntent();
      String[] myStrings = intent.getStringArrayExtra("ArrayphotoAlbum");
      int position = intent.getIntExtra("position", 0);

    setContentView(R.layout.photo_album_viewpager);

       // check the version of android

    if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = 
                new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        }

     ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
        ImagePagerAdapter adapter = new ImagePagerAdapter(myStrings,position);
        viewPager.setAdapter(adapter);




}


private class ImagePagerAdapter extends PagerAdapter {
     private String[] ArrayphotoAlbumb;
     private int positionb;

    public ImagePagerAdapter(String[] myStrings, int position)
    {
        ArrayphotoAlbumb = myStrings;
        positionb = position;
    }

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

    @Override
    public boolean isViewFromObject(View view, Object object) {
      return view == ((ImageView) object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
      Context context = MemorialPhotoAlbumViewpager.this;

      ImageView imageView = new ImageView(context);

      String test = ArrayphotoAlbumb[position];

      Bitmap bimage=  getBitmapFromURL(test);
      imageView.setImageBitmap(bimage);



     ((ViewPager) container).addView(imageView, 0);
      return imageView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
      ((ViewPager) container).removeView((ImageView) object);
    }

  }

  public static Bitmap getBitmapFromURL(String src) {
      try {

          URL url = new URL(src);
          HttpURLConnection connection = (HttpURLConnection) url.openConnection();
          connection.setDoInput(true);
          connection.connect();
          InputStream input = connection.getInputStream();
          Bitmap myBitmap = BitmapFactory.decodeStream(input);

          return myBitmap;
      } catch (IOException e) {
          e.printStackTrace();

          return null;
      }
  }

i can get the display out but the viewpager position always start with 0. how can i if i click on second image on the gridview and display it using viewpager allow to swipe to the left to display the first images.

Upvotes: 0

Views: 1141

Answers (1)

Basim Sherif
Basim Sherif

Reputation: 5440

If you are starting a new activity for view pager, get the position of selected image from gridview and pass it to that activity. Then you can set selected image in view pager like,

pager.setCurrentItem(currentid); // here current id is the position of selected image.

Upvotes: 1

Related Questions