我尝试访问我放在hashmap对象中的drawable资源 这是我的相关代码:
private void pairImagesCollection() {
mImages.put(R.drawable.img1, R.drawable.img1shadow);
mImages.put(R.drawable.img2, R.drawable.img2shadow);
mImages.put(R.drawable.img3, R.drawable.img3shadow);
mImages.put(R.drawable.img4, R.drawable.img4shadow);
}
private void checkMatch(View dragView, View view) {
ImageView target = (ImageView) view;
ImageView dragged = (ImageView) dragView;
Drawable image = dragged.getDrawable();
int imgId = mImages.get(Integer.valueOf(image)); // wrong, I don't know how to do it ?!
target.setImageResource(imgId);
}
任何帮助都会被评价!
答案 0 :(得分:1)
您可以使用 Iterator
Iterator itObj = hashMapOBJ.entrySet().iterator();
while (itObj .hasNext()) {
Map.Entry pair = (Map.Entry) itObj.next();
String Key = (String) pair.getKey();
Drawable Value = (Drawable) pair.getValue();
hashMapOBJ.put(Key, Value);
System.out.println("Key: " + Key + "------>" + Value);
}
答案 1 :(得分:0)
你有一个hashmap存储对图像及其阴影的引用吗? 您要在图像视图中放置哪个图像?你必须遍历地图并放置你想要的图像:
Iterator iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry pair = (Map.Entry)iterator.next();
System.out.println(pair.getKey() + " = " + pair.getValue());
}
如果您想要放置值图像,那么您将 pair.getKey()放入 pair.getValue()。
target.setImageResource(R.drawable.xxx);
答案 2 :(得分:0)
int imgId = mImages.get(Integer.valueOf(image));
您无法从Resource/Drawable Id
到ImageView
获得Drawable
。使用上面的代码,您可以为ImageView dragged
设置标记。之后使用mImages
获取价值。
在你checkMatch
之前,你将dragView的标签设置为Drawble,类似的东西:
dragged.setTag(R.drawable.img1);
现在你可以getDrawableId
和
imgId = getDrawableId(dragged);
private int getDrawableId(ImageView iv) {
return (Integer) iv.getTag();
}