【发布时间】:2015-02-19 16:35:43
【问题描述】:
应用在 Gridview 中显示图像。在 GridView 的适配器中,我从可用资源中随机生成 # of images reqd。创建一个新的Integer[] imageIDs,并将这些资源 ID 保存在这个新数组中。我还想将此resourceID 存储在扩展ImageView 的自定义对象ImageSourceObject 的ArrayList 中。我使用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 保存它的所有资源???
非常感谢任何帮助。
谢谢
【问题讨论】:
-
文档对
getId有什么看法?
标签: java android gridview android-resources resource-id