12

我已经为ImageView使用setImageResource(R.drawable.icon1).

现在我的要求是找出为 an 设置的图像是什么ImageView并进行一些处理。

if (imageView.getImageResource() == R.drawable.icon1) {
  //do some processing
else if (imageView.getImageResource() == R.drawable.icon2) {
  //do somethign else
else 
 //display

所以我想知道是否存在一种方法(AFAIK,它不存在),以及它是否不存在如何跟踪已为ImageView.

谢谢。萨那。

4

5 回答 5

8

您应该能够按如下方式使用 tag 属性:

imageView.setImageResource(R.drawable.icon1);
imageView.setTag(Integer.valueOf(R.drawable.icon1));

// later

int drawable = (Integer) imageView.getTag();

switch(drawable) {

    case R.drawable.icon1:
         // do_something....
         break;

    case R.drawable.icon2:
         // do_something....
         break;

    ...
}
于 2014-02-25T20:31:54.323 回答
7

您假设因为您输入了一个整数,所以您可以取出一个整数,但事实并非如此setImageResource()。请参阅ImageView#setImageResource()。这只是一种方便的方法:Android 在幕后所做的是查找 Drawable 资源(在大多数情况下,它是 BitmapDrawable,但它可以是任何类型),然后将该资源作为 ImageView 应用位图对象(即,仅图像数据——它不知道其原始“资源 ID”以前是什么)。

您最好的解决方案是跟踪您使用的最后一个资源 ID:

imageView.setImageResource(R.drawable.image1);
this.mLastResourceId = R.drawable.image1;
// ...

// Later, when checking the resource:
if (this.mLastResourceId == R.drawable.image1) {
    // Do something
}
于 2011-06-15T02:37:27.067 回答
0

如果可能的话,另一种选择是将 ImageView 子类化并将整数存储在覆盖的 setImageResource() 中。

public class MyImageView extends ImageView  {
  int rememberId = -1;
  @override void setImageResource(int resId){
    rememberId = resId;
  }  
  int getMyResId(){
    return rememberId;
  }
}
于 2013-02-15T08:45:34.790 回答
-1

您应该能够使用 Bundle 并设置您需要的任何属性。

Intent i = new Intent();      
Bundle extras = new Bundle();
      i.putExtra("prop", "value");
于 2011-06-15T02:11:29.763 回答
-1
package com.widget;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageButton;

/**
 * custom star type imagebutton that can be obtain the background image resource
 * id.
 * 
 * </p> your layout xml resource might be like the following code: <br>
 * <view class="com.widget.StarButton" <br>
 *      android:id="@+id/starButton" <br>
 *      android:layout_width="wrap_content" <br>
 *      android:layout_height="wrap_content" <br>
 *      android:background="@android:color/background_light" <br>
 *      android:paddingTop="10dp" <br>
 *      android:src="@drawable/star" /> <br>
 * 
 * @author Jeffen
 * 
 */
public class StarButton extends ImageButton {
private int mLastResourceId = -1;

public StarButton(Context context) {
    super(context);
}

public StarButton(Context context, AttributeSet attrs) {
    this(context, attrs, android.R.attr.imageButtonStyle);
}

public StarButton(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    setFocusable(true);
}

/**
 * set image resource and sync image resource id.
 */
@Override
public void setImageResource(int resId) {
    super.setImageResource(resId);

    setImageResourceId(resId);
}

public int getImageResourceId() {
    return mLastResourceId;
}

public void setImageResourceId(int resId) {
    mLastResourceId = resId;
}

}
于 2013-06-21T09:24:05.010 回答