应用程序在Gridview中显示图像。在GridView的适配器中,我从可用资源中随机生成了reqd个图像。创建一个新的Integer[] imageIDs并将那些资源ID保存在此新阵列中。我也想将此resourceID存储在扩展ImageView的自定义对象ArrayListImageSourceObject中。我使用imgObj.setImageResource(imageIDs[i])设置imageView。现在,当我在onTouch()getView()方法中检索此对象时,我希望获得与imageView集相同的资源,而我得到-1。

我认为当我通过setImageResource()设置ImageSourceObject的ImageView时,那么当我尝试检索ImageSourceObject的getId()时,我应该获取ImageView集的ID。

代码:

    private void createObjectsArray() {
    int totalObjs = 15;
    Integer[] mThumbIds = {
            R.drawable.droid_1, R.drawable.droid_3,
            R.drawable.droid_2, R.drawable.ic_launcher
    };
    // Create new [] for imageIDs to store the resource ID as generated
    imageIds = new Integer[totalObjs];
    // Create ArrayList of ImageSourceObject to set image & other proeprties
    this.imgObjsArr = new ArrayList<ImageSourceObject>();

    Random random = new Random();
    int index;
    // Set Targets
    for (int i=0; i < totalObjs; i++) {
        index = this.generateRandomNumber(0, (mThumbIds.length - 1), random);
        imageIds[i] = mThumbIds[index];
        ImageSourceObject iso = new ImageSourceObject(mContext);
        iso.setImageResource(imageIds[i]);
        imgObjsArr.add(iso);

        Log.d("GA", "ThumbIDS ID : " + mThumbIds[index] + " ImageIDs  : " + imageIds[i] + " ISO IMG ID : " + iso.getId());
    }
}


此代码的日志:

02-19 12:21:38.780: D/GA(1613): ThumbIDS ID : 2130837557 ImageIDs  : 2130837557 ISO IMG ID : -1


您可以看到mThumbIDsimageIDs值的ID相同。但是对于设置图像后的iso对象,它也是-1 ??

ImageSourceObject的代码非常简单:

public class ImageSourceObject extends ImageView {

private boolean touched;
private boolean targetObj;

public ImageSourceObject(Context context) {
    super(context);
    setTouched(false);
    setTargetObj(false);
}

 .... Rest Getter & Setter methods


您能帮我知道为什么没有在ImageSourceObject中设置资源ID吗?不会通过setImageResourceImageView设置图像并保存所有资源吗?

非常感谢您的帮助。

谢谢

最佳答案

您提供的ID是针对您填充到ImageSourceObject(可绘制对象)的Image的ID,而不是ImageSourceObject本身的ID。
如果要将ID设置为此数字,则应执行以下操作:

        iso.setImageResource(imageIds[i]);
        iso.setId(imageIds[i]);

08-27 10:19