简体   繁体   English

在Grid视图ANdroid的Click侦听器上显示图像

[英]Show image on Click listener of Grid view ANdroid

I have grid view in my android app and i want that when i click on one of the image in grid view it shows that image in full view. 我的Android应用程序中有网格视图,当我单击网格视图中的图像之一时,它希望以全视图显示该图像。

Currently it shows the position of the image when click on it. 当前,单击图像时它会显示图像的位置。

Here is code 这是代码

GridView gridview = (GridView) findViewById(R.id.gridview);
        gridview.setAdapter(new ImageAdapter(this));

        gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v,
                                    int position, long id) {
                Toast.makeText(ViewActivity.this, "" + position,
                        Toast.LENGTH_SHORT).show();
            }
        });

Here is ImageAdapter 这是ImageAdapter

public class ImageAdapter extends BaseAdapter {

    private Context mContext;

    public ImageAdapter(Context c) {
        mContext = c;
    }
    public int getCount() {
        return mThumbIds.length;
    }

    public Object getItem(int position) {
        return null;
    }

    public long getItemId(int position) {
        return 0;
    }

    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {
            // if it's not recycled, initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }
        Picasso.with(mContext).load(mThumbIds[position]).into(imageView);
        //imageView.setImageResource(Integer.parseInt(mThumbIds[position]));
        return imageView;
    }


    public String[] mThumbIds = new String[]{
            "http://192.168.1.4/comic_app/index.php?id=1",
            "http://192.168.1.4/comic_app/index.php?id=67",
            "http://192.168.1.4/comic_app/index.php?id=4",
            "http://192.168.1.4/comic_app/index.php?id=89",
            "http://192.168.1.4/comic_app/index.php?id=98",
            "http://192.168.1.4/comic_app/index.php?id=23",
            "http://192.168.1.4/comic_app/index.php?id=45",
    };
}

How to show image on click of that image. 单击该图像时如何显示该图像。

Thanks in advance. 提前致谢。

You can pass the BitMap to the other activity in the following way. 您可以通过以下方式将BitMap传递给其他活动。

Intent intent = new Intent(getApplicationContext(),CameraPreviewActivity.class);
Bundle extras = new Bundle();
gridItem = gridItems.get(position);
bitmap = gridItem.getImage();
image_title = gridItem.getImageTitle();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 50, bos);
extras.putString(IMAGE_TITLE,image_title);
extras.putByteArray(IMAGE, bos.toByteArray());
intent.putExtras(extras);
startActivity(intent);

This code will go inside your gridview.setOnItemClickListener . 这段代码将放在您的gridview.setOnItemClickListener内部。

And in the next activity obtain the image using the below code. 并在下一个活动中使用以下代码获取图像。

byte[] byteArray = getIntent().getByteArrayExtra(IMAGE);
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

Hope this helps! 希望这可以帮助!

You can pass the position of clicked item to next screen 您可以将单击项的位置传递到下一个屏幕

     // Sending image id to FullScreenActivity
     Intent i = new Intent(getApplicationContext(), FullImageActivity.class);
     // passing array index
     i.putExtra("id", position);
     startActivity(i);

Then in FullImageActivity you can get the image position and display it as 然后在FullImageActivity中,您可以获取图像位置并将其显示为

 // get intent data
 Intent i = getIntent();

 // Selected image id
 int position = i.getExtras().getInt("id");
 ImageAdapter imageAdapter = new ImageAdapter(this);

 ImageView imageView = (ImageView) findViewById(R.id.full_image_view);
 imageView.setImageResource(imageAdapter.mThumbIds[position]);

For more reference you can visit the below link: 有关更多参考,您可以访问以下链接:
http://www.androidhive.info/2012/02/android-gridview-layout-tutorial/ http://www.androidhive.info/2012/02/android-gridview-layout-tutorial/

I have solved my problem i just replace this line 我已经解决了我的问题,我只替换了这条线

imageView.setImageResource(imageAdapter.mThumbIds[position]);

with this 有了这个

Picasso.with(imageAdapter.mContext).load(imageAdapter.mThumbIds[position]).into(imageView);

Now working fine.... 现在工作正常。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM