Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Gridview onclick图像使用viewpager将imageview显示为库视图_Java_Android - Fatal编程技术网

Java Gridview onclick图像使用viewpager将imageview显示为库视图

Java Gridview onclick图像使用viewpager将imageview显示为库视图,java,android,Java,Android,我的应用程序将图像显示为gridview,并单击任何图像显示库视图,允许使用viewpager左右滑动。我的代码如下: public class MemorialPhotoAlbumViewpager extends FragmentActivity { static Activity MemorialPhotoAlbumViewpagerActivity; int positionstate = 0; @Override public void onCreate(Bundle savedI

我的应用程序将图像显示为gridview,并单击任何图像显示库视图,允许使用viewpager左右滑动。我的代码如下:

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

我可以显示出来,但viewpager位置始终以0开头。如果我单击gridview上的第二个图像并使用viewpager显示它,如何允许向左滑动以显示第一个图像。

如果您正在启动viewpager的新活动,请从gridview获取所选图像的位置并将其传递给该活动。然后您可以在查看页面中设置所选图像,如

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

你解决了我的问题。谢谢当我尝试左右滑动时,我面临另一个问题,就像延迟/挂起一段时间一样,只加载图像。有什么想法吗?你在使用图像缓存吗?为了避免这种延迟,你必须有效地处理位图;HttpURLConnection connection=(HttpURLConnection)url.openConnection();connection.setDoInput(true);connection.connect();InputStream输入=连接。getInputStream();位图myBitmap=BitmapFactory.decodeStream(输入)看看这个库-它是一个非常棒的库,可以缓存来自web的图像并有效地处理它们。