【问题标题】:Getting gridview image in new activity在新活动中获取gridview图像
【发布时间】:2013-08-21 12:14:19
【问题描述】:

我正在尝试将我点击/选择的图像发送到新活动,这是我的代码

public int getCount() {
    return mThumbIds.length;
}
public View getView(final 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);
            imageView.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Intent intent = new Intent(mContext,HeroData.class);
                    intent.putExtra("imageID", position);
                    mContext.startActivity(intent);
                }
            });
        } else {
            imageView = (ImageView) convertView;
        }

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

    }

private Integer[] mThumbIds = {
        R.drawable.pic1, R.drawable.pic12,
        R.drawable.pic2, R.drawable.pic13,
        R.drawable.pic3, R.drawable.pic14,

};

}

并尝试在新活动中接收它

Bundle bdl = getIntent().getExtras();
    int index = bdl.getInt("imageID");
    ImageView image = (ImageView) findViewById(R.id.imageview);
    image.setImageResource();//the problem ! how to receive the selected image

我想知道我正在发送(“imageID”,位置);如何获取选中的图片

【问题讨论】:

  • 你必须将你的 imageList 数组设为 public 静态并在你的新 Activity 中访问它。
  • @PiyushGupta 为什么需要静态图像,您可以将图像转换为字节数组并使用意图传递它。或者按照下面的 Adrián Rodríguez 建议进行操作。 Adrián Rodríguez 应该工作。

标签: android android-intent android-gridview


【解决方案1】:

由于您正在发送资源,因此您可以发送资源 id 而不是它在数组中的索引。像这样的:

intent.putExtra("imageID", mThumbIds[position]);
mContext.startActivity(intent);

在你的活动中:

Bundle bdl = getIntent().getExtras();
int imageRes = bdl.getInt("imageID");
ImageView image = (ImageView) findViewById(R.id.imageview);
image.setImageResource(imageRes);

希望对您有所帮助。

【讨论】:

  • 刚刚好! :D 将发送资源更改为资源 ID!
【解决方案2】:

这样使用...

gridView.setOnItemClickListener(new OnItemClickListener()   
    {

        public void onItemClick(AdapterView<?> parent, View v,int position, long id) 

        {

            Intent i = new Intent(getApplicationContext(), HeroData.class);



            i.putExtra("imageID", position);

             startActivity(i);


        }
    });

需要右键单击才能查看gridview...

【讨论】:

  • intent.putExtra("imageID", position) 是不是不一样。有什么不同?
  • 把这个放在你的 MainActivity 的 onCreate 方法中。
【解决方案3】:

你可以把你的可绘制资源放在另一个地方,例如你可以在资源中做它,作为字符串数组

<resources>

<string-array name="thumbs_imgs">
    <item>@drawable/pic1</item>
    <item>@drawable/pic2</item>
    <item>@drawable/pic3</item>
</string-array>

</resources>

然后通过索引绘制你需要的东西

TypedArray imgs = getResources().obtainTypedArray(R.array.thumbs_imgs);
//get resourceid by index
mImgView1.setImageResource(imgs.getResourceId(i, -1));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 2020-05-12
    • 2018-07-04
    • 1970-01-01
    相关资源
    最近更新 更多