我的应用程序具有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或标签?
答案 0 :(得分:1)
为什么直接从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);
}
}