根据从先前活动中选择的 Gridview 显示图像 [英] Display image based on Gridview selection from previous activity

查看:34
本文介绍了根据从先前活动中选择的 Gridview 显示图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前有一个显示一些缩略图的工作网格视图.目前,当您选择一张图片时,它会将更大分辨率的图片保存为壁纸.

I currently have a working gridview displaying some thumbnails. Currently, when you select an image it will save a larger resolution of the image as a wallpaper.

我想要做的是打开一个新的意图,然后根据单击的 GridView 位置显示全分辨率图像.我不确定如何从新活动/意图中找出点击了哪个位置.

What I want to do is open a new intent and then display the full resolution image based on the GridView position clicked. I'm not sure how I find out what position was clicked from the new activity/intent.

这就是我的主要活动

public class test extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

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

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

            //Make a Bitmap from the Resource
            ImageAdapter i = (ImageAdapter)parent.getAdapter();
            Bitmap mBitmap = BitmapFactory.decodeResource(getResources(),(int)i.getItemId(position));

            //Get the WallpaperManager
            WallpaperManager myWallpaperManager = WallpaperManager.getInstance(getApplicationContext());

            try {
                //Set the clicked bitmap
                myWallpaperManager.setBitmap(mBitmap);
                Toast.makeText(test.this, "Wallpaper set", Toast.LENGTH_SHORT).show();
            } catch (IOException e) {
                Toast.makeText(test.this, "Error setting wallpaper", Toast.LENGTH_SHORT).show();
            }

        }
    });

}

}

图像适配器

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 mFullSizeIds[position];
}

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

    imageView.setImageResource(mThumbIds[position]);
    return imageView;
}

// references to our images
private Integer[] mThumbIds = {
        R.drawable.sample_1, R.drawable.sample_2,
        R.drawable.sample_3, R.drawable.sample_4,
        R.drawable.sample_5, R.drawable.sample_6,
        R.drawable.sample_7 
};


private Integer[] mFullSizeIds = {
        R.drawable.wallpaper1,
        R.drawable.wallpaper2,
        R.drawable.wallpaper3,
        R.drawable.wallpaper4,
        R.drawable.wallpaper5,
        R.drawable.wallpaper6,
        R.drawable.wallpaper7
        };

}

和空白的 FullView 模板

And blank FullView template

public class FullView extends Activity {

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fullview);

ImageView imageview;
    imageview.setImageResource(mFullSizeIds[**]) <--- How to set ** to what GridView position was selected?


}

}

我还没有真正在 FullView 活动中编写任何内容,因为我不知道如何在这个新活动中传递从 GridView 中单击的位置.

I haven't really written anything in the FullView activity yet due to being unaware of how to pass the position that was clicked from the GridView in this new activity.

(我也没有在我的主要活动中编写意图代码,所以你可以看到它目前是如何工作的)

(I haven't written the intent code in my main activity either so you can see how it currently works)

如何将选中的 gridview 位置传递到新活动中?

How do I pass the gridview position that was selected into the new activity?

推荐答案

在您的事件处理程序(OnItemClickListener)中,您可以通过 mThumbs[position] 获取图像的资源 ID.将此作为额外内容添加到用于启动 FullView Activity 的 Intent 中.

In your event handler (the OnItemClickListener), you can get the resource ID of the image as mThumbs[position]. Add this as an extra to the Intent you use to start your FullView Activity.

这篇关于根据从先前活动中选择的 Gridview 显示图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆