0

我目前有 2 个名为 ProjectPreview 和 ImageAdapter 的类。

Projectpreview 具有视图和操作栏。

我想不出一种方法来获取图像视图中当前图像的 ID 以删除操作栏上的内容。

在项目预览中创建:

    Gallery gallery = (Gallery) findViewById(R.id.gallery);
    gallery.setAdapter(new ImageAdapter(this));

    gallery.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView parent, View v, int position, long id) {
            ImageAdapter ia1 = new ImageAdapter();
            ia1.showLarger(position); }

删除项目预览中的代码:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_delete:
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

图像适配器类:

     public Integer[] mImageIds = {
            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
    };

    public void showLarger(int position){
        ImageView image = (ImageView) findViewById(R.id.iv1);
        image.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
        image.setImageResource(mImageIds[position]);
    }

我需要想办法获取 image.setImageResource(mImageIds[position]); 到另一个班级,以便我可以删除 mImageIds[position] aka 图片。

4

1 回答 1

0

为此,您可以在 ImageView 上使用setTag函数。标签可以是您想要的任何类型的对象,例如用于图像资源的 id。当你想删除它时,你可以使用 imageView.getTag() 它将返回你用 setTag 设置的对象。我看到单击菜单项时您的删除代码正在运行。我在那里看不到对 ImageView 的引用,因此您需要运行 findViewById 来获取对视图的引用。

设置标识:

public void showLarger(int position){
    ImageView image = (ImageView) findViewById(R.id.iv1);
    image.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
    image.setImageResource(mImageIds[position]);
    image.setTag(mImageIds[position]);
}

获取标识:

    ImageView image = (ImageView) findViewById(R.id.iv1);
    int id = (Integer)image.getTag();
于 2012-04-18T14:52:24.190 回答