应用程序在Gridview中显示图像。在GridView的适配器中,我从可用资源中随机生成了reqd个图像。创建一个新的Integer[] imageIDs
并将那些资源ID保存在此新阵列中。我也想将此resourceID存储在扩展ImageView的自定义对象ArrayList
的ImageSourceObject
中。我使用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
您可以看到
mThumbIDs
和imageIDs
值的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吗?不会通过setImageResource
的ImageView
设置图像并保存所有资源吗?非常感谢您的帮助。
谢谢
最佳答案
您提供的ID是针对您填充到ImageSourceObject(可绘制对象)的Image的ID,而不是ImageSourceObject本身的ID。
如果要将ID设置为此数字,则应执行以下操作:
iso.setImageResource(imageIds[i]);
iso.setId(imageIds[i]);