从多个 ImageViews 中获取 Resource Id 并为它们分配 drawable

Get Resource Id from multiple ImageViews and assign drawable to them

我的应用有一个 GridLayout 和 60 个 ImageView。我想将一个可绘制对象分配给 25 个网格布局单元格。为此,我有一个包含 25 个随机数的数组。
然后我定义了一个哈希图,每个项目都是图像视图之一:


private  HashMap<Integer, Integer> imageViews = new HashMap<>();
imageViews.put(0, R.id.imageView1);
.
.
.
imageViews.put(59, R.id.imageView60);

并将 60 个 imgageviews 放入 hashmap ... 0 是第一个 imageview 的 id。 并使用此方法将可绘制对象设置为单元格:

    private void setBombDrawable(){
    HashMap<Integer, Integer> map = mImageViewsMap.getImageViews();
    for (int tag : randomBombArray) {
        int id = map.get(tag);
        ImageView imageView = findViewById(id);
        imageView.setImageResource(R.drawable.exploded);
    }

}

代码运行没有问题,但是是否有任何更简单的方法从网格布局中获取图像视图 ID 或标签而不是 60 行代码?

当您可以直接从 GridLayout 获取 ImageView 时,为什么只使用 id。 GridLayout 是一个 ViewGroup,因此您可以遍历其所有子视图。

private Map<Integer, ImageView> imageViews = new HashMap<>();
int childCount = gridLayout.getChildCount();
for (int i = 0; i < childCount; i++) {
    View v = gridLayout.getChildAt(i);
    if (v instanceof ImageView) {
         map.put(i, (ImageView) v);
    }    
}