2012-04-18 33 views
0

我目前有2个名为ProjectPreview和ImageAdapter的类。检索其他类中的imageview资源

Projectpreview具有视图和操作栏。

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

的OnCreate在projectpreview:在projectpreview

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

ImageAdapter类:

 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 [位置]);到另一个班,以便我可以删除mImageIds [位置] aka图片。

回答

0

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

设置ID:

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

获取ID:

ImageView image = (ImageView) findViewById(R.id.iv1); 
    int id = (Integer)image.getTag(); 
+0

非常感谢您!非常感激。它完美无瑕。 – Denis 2012-04-18 16:05:10