如何在hashmap中访问可绘制对

时间:2017-03-06 09:44:14

标签: android hashmap

我尝试访问我放在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);
    }

任何帮助都会被评价!

3 个答案:

答案 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 IdImageView获得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();
    }