2014-11-08 22 views
0

我有几个ImageViews,都使用onClick()。如何根据所点击的图像从特定的ImageView中获取ID或R.drawable int以打开另一个图像?在onClick()中获取R.drawable int

+1

你真的想确定哪个'ImageView'被点击或者你真的需要知道'ImageView'包含哪个'Drawable'?你的问题不清楚。 – Squonk 2014-11-09 00:27:13

回答

1

我想你有你的XML布局文件中的一些图像的观点:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_content" > 

    <ImageView 
     android:id="@+id/image_1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/image_drawable_1" 
     android:onClick="doSomething" /> 

    <ImageView 
     android:id="@+id/image_2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/image_drawable_2" 
     android:onClick="doSomething" /> 

    <ImageView 
     android:id="@+id/image_3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/image_drawable_3" 
     android:onClick="doSomething" /> 

</LinearLayout> 

你要这个方法添加到您的活动:

public void doSomething(View v) { 
    switch (v.getId()) { 
     case R.id.image_1: 
      // You clicked on image 1 
      // If you need to do something to the ImageView with this particular Id then uncomment the next line. 
      // ImageView imageView = (ImageView) v; 
      break; 
     case R.id.image_2: 
      // You clicked on image 2 
      break; 
     case R.id.image_3: 
      // You clicked on image 3 
      break; 
    } 

} 
-1

您可以使用以下命令从ImageView中获取当前Drawable。

Drawable myDrawable = YourImageView.getDrawable(); 

然后,您可以继续并使用myDrawable任何你想要的地方。

0

我不认为你可以获取用于为ImageView生成Drawable的资源标识符,但是当以编程方式设置图像时,可以将其另存为ImageView的标记。

imageView.setImageResource(R.drawable.image_resource); 
imageView.setTag(R.drawable.image_resource); 

可以不是以后这样的检索:

int imageResource = (Integer) imageView.getTag(); 
1

使用getResources().getDrawable

例子:

ImageView myImg = (ImageView) findViewById(R.id.myImg); 
myImg.setImageResource = getResources().getDrawable(R.drawable.icon); 
0

我保存有通过点击显示的图像的IDS int数组中的onClick(),所以我创建了一个类似于解决机智的解决方法那个问题。

我的onClick()现在看起来是这样的:

public void showPictureZoomDialog(View view) 
{ 
    int singlePicValue400 = 0; 

     switch (view.getId()) 
     { 
      case R.id.picture_imgvw_pic1: 
       singlePicValue400 = currentPicSite.getPicValues400()[0]; 
       break; 
      case R.id.picture_imgvw_pic2: 
       singlePicValue400 = currentPicSite.getPicValues400()[1]; 
       break; 
      case R.id.picture_imgvw_pic3: 
       singlePicValue400 = currentPicSite.getPicValues400()[2]; 
       break; 
      case R.id.picture_imgvw_pic4: 
       singlePicValue400 = currentPicSite.getPicValues400()[3]; 
       break; 
      case R.id.picture_imgvw_pic5: 
       singlePicValue400 = currentPicSite.getPicValues400()[4]; 
       break; 
      case R.id.picture_imgvw_pic6: 
       singlePicValue400 = currentPicSite.getPicValues400()[5]; 
       break; 
      case R.id.picture_imgvw_pic7: 
       singlePicValue400 = currentPicSite.getPicValues400()[6]; 
       break; 
      case R.id.picture_imgvw_pic8: 
       singlePicValue400 = currentPicSite.getPicValues400()[7]; 
       break; 
      case R.id.picture_imgvw_pic9: 
       singlePicValue400 = currentPicSite.getPicValues400()[8]; 
       break; 
      case R.id.picture_imgvw_pic10: 
       singlePicValue400 = currentPicSite.getPicValues400()[9]; 
       break; 
     } 

    Intent intent = new Intent(this, PictureZoomDialog.class); 
    intent.putExtra("PICID", singlePicValue400); 
    startActivity(intent); 
} 

我获得图像的标识我想通过意图显示:

public class PictureZoomDialog extends Activity { 

private ImageView mDialog; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_picture_zoom_dialog); 

    mDialog = (ImageView)findViewById(R.id.pictureactivity_imgvw_pic1); 
    mDialog.setClickable(true); 
    mDialog.setImageResource(getIntent().getIntExtra("PICID",-1)); 

    mDialog.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      finish(); 
     } 
    }); 
} 
} 

THX很多家伙让我在正确的方向!