从多个ImageView获取资源ID并为它们分配可绘制对象

问题描述

我的应用程序具有GridLayout和60个ImageViews。我想将可绘制对象分配给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);
    }

}

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

解决方法

为什么直接从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);
    }    
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...